﻿/******************************************************************************
 * * ime_main.c - implementation of ime main functions
 *
 * *(C) Copyright 2019 Asr International Ltd.
 * * All Rights Reserved
 * ******************************************************************************/
/*********************
*      INCLUDES
*********************/
#include <stdio.h>
#include "inter_common_ui_interface.h"
#include "ui_ime.h"
#include "../../../lvgl/hal/hal.h"
#include "ui_log.h"

/************************************
 *     Chinese Ime Index Tabel
 **************************************/
const UINT8    PY_mb_space[] = { "" };
const UINT8    PY_mb_a[]     = { "啊阿吖嗄腌锕呵安按爱暗埃" };
const UINT8    PY_mb_ai[]    = { "爱埃碍矮挨唉哎哀皑癌蔼艾隘呆捱嗳嗌嫒瑷暧砹锿霭" };
const UINT8    PY_mb_an[]    = { "安按暗岸案俺氨胺鞍谙埯揞犴庵桉铵鹌黯广厂" };
const UINT8    PY_mb_ang[]   = { "昂肮盎" };
const UINT8    PY_mb_ao[]    = { "凹奥敖熬翱袄傲懊澳嚣坳拗嗷岙廒遨媪骜獒聱螯鏊鳌鏖" };
const UINT8    PY_mb_b[]     = { "不部本鲍柏毕变比并别百报步办表" };
const UINT8    PY_mb_ba[]    = { "把八吧巴拔霸罢爸坝芭捌扒叭笆疤跋靶耙茇菝岜灞钯粑鲅魃" };
const UINT8    PY_mb_bai[]   = { "百白败摆伯柏佰拜稗捭掰" };
const UINT8    PY_mb_ban[]   = { "办半板班般版拌搬斑扳伴颁扮瓣绊阪坂钣瘢癍舨" };
const UINT8    PY_mb_bang[]  = { "帮棒邦榜梆膀绑磅蚌镑傍谤蒡浜" };
const UINT8    PY_mb_bao[]   = { "报保包剥薄胞暴宝饱抱爆炮堡刨苞褒雹豹鲍曝瀑葆孢煲鸨褓趵龅勹宀" };
const UINT8    PY_mb_bei[]   = { "北被倍备背辈贝杯卑臂悲碑钡狈惫焙孛陂邶埤萆蓓呗悖碚鹎褙鐾鞴" };
const UINT8    PY_mb_ben[]   = { "本奔苯笨夯畚坌贲锛" };
const UINT8    PY_mb_beng[]  = { "泵崩蚌绷甭蹦迸嘣甏" };
const UINT8    PY_mb_bi[]    =
{
    "比必避闭辟笔壁臂毕彼逼币鼻蔽秘鄙碧蓖毙毖庇痹敝弊陛拂泌匕俾埤芘荜荸萆薜吡哔狴庳愎滗濞弼妣婢嬖璧贲睥畀铋秕裨筚箅篦舭襞跸髀"
};
const UINT8    PY_mb_bian[]   = { "变边便编遍辩扁辨鞭贬卞辫匾弁苄忭汴缏飚煸砭碥窆褊蝙笾鳊彼岸" };
const UINT8    PY_mb_biao[]   = { "表标彪膘勺婊骠杓飑飙镖镳瘭裱鳔髟" };
const UINT8    PY_mb_bie[]    = { "别鳖憋瘪蹩" };
const UINT8    PY_mb_bin[]    = { "宾彬斌濒滨摈傧豳缤玢槟殡膑镔髌鬓" };
const UINT8    PY_mb_bing[]   = { "并病兵柄冰丙饼秉炳屏禀邴摒槟" };
const UINT8    PY_mb_bo[]     = { "波播剥伯拨薄博勃驳玻泊柏卜菠钵搏铂箔帛舶脖膊渤魄孛亳啵饽檗掰擘礴钹鹁簸趵跛踣" };
const UINT8    PY_mb_bu[]     = { "不部步布补捕埔卜堡哺埠簿怖卟逋瓿晡钚钸醭" };
const UINT8    PY_mb_c[]      = { "产成程陈蔡曹崔楚褚池仇晁岑从此处车场传厂才次查" };
const UINT8    PY_mb_ca[]     = { "擦拆嚓礤" };
const UINT8    PY_mb_cai[]    = { "采才材菜财裁彩猜睬踩蔡" };
const UINT8    PY_mb_can[]    = { "参残蚕灿餐惭惨孱骖璨粲黪" };
const UINT8    PY_mb_cang[]   = { "藏仓苍舱沧" };
const UINT8    PY_mb_cao[]    = { "草槽操糙曹嘈漕螬艚" };
const UINT8    PY_mb_ce[]     = { "测策侧册厕恻" };
const UINT8    PY_mb_cen[]    = { "参岑涔" };
const UINT8    PY_mb_ceng[]   = { "层曾蹭噌" };
const UINT8    PY_mb_ch[]     = { "差长常昌超陈程城持重出初" };
const UINT8    PY_mb_cha[]    = { "查差插察茶叉茬碴搽岔诧刹喳嚓猹馇汊姹杈楂槎檫锸镲衩" };
const UINT8    PY_mb_chai[]   = { "差柴拆豺侪钗瘥虿" };
const UINT8    PY_mb_chan[]   = { "产单铲阐搀掺蝉馋谗缠颤冁谄蒇廛忏潺澶孱羼婵骣觇禅镡蟾躔" };
const UINT8    PY_mb_chang[]  = { "长常场厂唱肠昌倡偿畅猖尝敞裳倘伥鬯苌菖徜怅惝阊娼嫦昶氅鲳" };
const UINT8    PY_mb_chao[]   = { "朝超潮巢抄钞嘲吵炒绰剿怊晁焯耖" };
const UINT8    PY_mb_che[]    = { "车彻尺撤扯掣澈坼砗" };
const UINT8    PY_mb_chen[]   = { "陈沉称衬尘臣晨沈郴辰忱趁伧谌谶抻嗔宸琛榇碜龀" };
const UINT8    PY_mb_cheng[]  = { "成程称城承乘呈盛撑诚橙惩澄逞骋秤丞埕噌枨柽塍瞠铖铛裎蛏酲" };
const UINT8    PY_mb_chi[]    = { "持尺齿吃赤池迟翅斥耻痴匙弛驰侈炽傺坻墀茌叱哧啻嗤彳饬媸敕眵鸱瘛褫蚩螭笞篪豉踟魑" };
const UINT8    PY_mb_chong[]  = { "种虫重充冲崇涌宠茺忡憧铳舂艟" };
const UINT8    PY_mb_chou[]   = { "抽仇臭酬畴踌稠愁筹绸瞅丑俦帱惆瘳雠" };
const UINT8    PY_mb_chu[]    = { "出处除初础触楚锄储畜橱厨躇雏滁矗搐亍刍怵憷绌杵楮樗褚蜍蹰黜屮" };
const UINT8    PY_mb_chuai[]  = { "揣搋啜嘬膪踹" };
const UINT8    PY_mb_chuan[]  = { "传船穿串川椽喘舛遄巛氚钏舡" };
const UINT8    PY_mb_chuang[] = { "床创窗闯疮幢怆" };
const UINT8    PY_mb_chui[]   = { "吹垂锤椎炊捶陲棰槌" };
const UINT8    PY_mb_chun[]   = { "春纯醇椿唇淳蠢莼鹑蝽" };
const UINT8    PY_mb_chuo[]   = { "戳绰啜辍踔龊" };
const UINT8    PY_mb_ci[]     = { "此次刺磁雌词茨疵辞慈瓷赐伺兹茈呲祠鹚糍" };
const UINT8    PY_mb_cong[]   = { "从丛聪葱囱匆苁淙骢琮璁" };
const UINT8    PY_mb_cou[]    = { "凑楱辏腠" };
const UINT8    PY_mb_cu[]     = { "粗促醋簇卒蔟徂猝殂酢蹙蹴" };
const UINT8    PY_mb_cuan[]   = { "篡蹿窜攒汆撺爨镩" };
const UINT8    PY_mb_cui[]    = { "催脆淬粹摧衰崔瘁翠萃啐悴璀榱毳隹" };
const UINT8    PY_mb_cun[]    = { "存村寸蹲忖皴" };
const UINT8    PY_mb_cuo[]    = { "错措撮磋搓挫厝嵯脞锉矬痤瘥鹾蹉" };
const UINT8    PY_mb_d[]      = { "的大地杜董段戴邓丁窦狄翟刁电党定等当队点代道" };
const UINT8    PY_mb_da[]     = { "大打达答搭塔瘩耷哒嗒怛妲沓疸褡笪靼鞑" };
const UINT8    PY_mb_dai[]    = { "大代带待袋戴呆歹傣殆贷逮怠埭甙呔岱迨骀绐玳黛" };
const UINT8    PY_mb_dan[]    = { "单但弹担石蛋淡胆氮丹旦耽郸掸惮诞儋萏啖澹殚赕眈疸瘅聃箪" };
const UINT8    PY_mb_dang[]   = { "党当档挡荡谠凼菪宕砀裆" };
const UINT8    PY_mb_dao[]    = { "到道导刀倒稻岛捣盗蹈祷悼叨帱忉氘焘纛" };
const UINT8    PY_mb_de[]     = { "的得地德底锝" };
const UINT8    PY_mb_deng[]   = { "等灯登邓澄蹬瞪凳噔嶝戥磴镫簦" };
const UINT8    PY_mb_di[]     = { "的地第低敌底提帝抵滴弟递堤迪笛狄涤翟嫡蒂缔氐籴诋谛邸坻荻嘀娣绨柢棣觌砥碲睇镝羝骶" };
const UINT8    PY_mb_dia[]    = { "嗲" };
const UINT8    PY_mb_dian[]   = { "电点垫典店颠淀掂滇碘靛佃甸惦奠殿阽坫巅玷钿癜癫簟踮" };
const UINT8    PY_mb_diao[]   = { "调掉吊鸟碉叼雕凋刁钓铞铫貂鲷" };
const UINT8    PY_mb_die[]    = { "迭跌爹碟蝶谍叠垤堞揲喋牒瓞耋踮蹀鲽" };
const UINT8    PY_mb_ding[]   = { "定顶钉丁订盯叮鼎锭仃啶玎腚碇町铤疔耵酊" };
const UINT8    PY_mb_diu[]    = { "丢铥" };
const UINT8    PY_mb_dong[]   = { "动东冬懂洞冻董栋侗恫垌咚岽峒氡胨胴硐鸫" };
const UINT8    PY_mb_dou[]    = { "斗都豆读兜抖陡逗痘蔸窦蚪篼" };
const UINT8    PY_mb_du[]     = { "度都毒独读渡杜堵镀顿督犊睹赌肚妒芏嘟渎椟牍蠹笃髑黩" };
const UINT8    PY_mb_duan[]   = { "断端段短锻缎椴煅簖" };
const UINT8    PY_mb_dui[]    = { "对队堆敦兑怼憝碓" };
const UINT8    PY_mb_dun[]    = { "盾吨顿蹲敦墩囤钝遁沌炖砘礅盹镦趸" };
const UINT8    PY_mb_duo[]    = { "多度夺朵掇哆垛躲跺舵剁惰堕驮咄哚沲缍柁铎裰踱" };
const UINT8    PY_mb_e[]      = { "恶额恩俄耳饵蛾饿峨鹅讹娥厄扼遏鄂噩谔垩苊莪萼呃愕屙婀轭腭锇锷鹗颚鳄" };
const UINT8    PY_mb_ei[]     = { "诶" };
const UINT8    PY_mb_en[]     = { "恩蒽摁" };
const UINT8    PY_mb_er[]     = { "而二尔儿耳饵洱贰佴迩珥铒鸸鲕" };
const UINT8    PY_mb_f[]      = { "分发范樊方冯反放复风防非封富翻" };
const UINT8    PY_mb_fa[]     = { "发法阀乏伐罚筏珐垡砝" };
const UINT8    PY_mb_fan[]    = { "反翻范犯饭繁泛番凡烦返藩帆樊矾钒贩蕃蘩幡梵燔畈蹯" };
const UINT8    PY_mb_fang[]   = { "方放防访房纺仿妨芳肪坊邡彷枋钫舫鲂" };
const UINT8    PY_mb_fei[]    = { "非肥飞费废肺沸菲匪啡诽吠芾狒悱淝妃绯榧腓斐扉镄痱蜚篚翡霏鲱" };
const UINT8    PY_mb_fen[]    = { "分粉奋份粪纷芬愤酚吩氛坟焚汾忿偾瀵玢棼鲼鼢" };
const UINT8    PY_mb_feng[]   = { "风封蜂丰缝峰锋疯奉枫烽逢冯讽凤俸酆葑唪沣砜" };
const UINT8    PY_mb_fo[]     = { "佛" };
const UINT8    PY_mb_fou[]    = { "否缶" };
const UINT8    PY_mb_fu[]     =
{
    "复服副府夫负富附福伏符幅腐浮辅付腹妇孵覆扶辐傅佛缚父弗甫肤氟敷拂俘涪袱抚俯釜斧脯腑赴赋阜讣咐匐凫郛芙芾苻茯莩菔拊呋幞怫滏艴孚驸绂绋桴赙祓砩黻黼罘稃馥蚨蜉蝠蝮麸趺跗鲋鳆"
};
const UINT8    PY_mb_g[]     = { "个国工过高郭戈葛耿巩龚甘干古贾谷顾关管各革公根更改光广果格共搞" };
const UINT8    PY_mb_ga[]    = { "夹噶嘎胳尬尕尜旮钆" };
const UINT8    PY_mb_gai[]   = { "改该盖概钙溉芥丐陔垓戤赅" };
const UINT8    PY_mb_gan[]   = { "干杆感敢赶甘肝秆柑竿赣乾坩苷尴擀泔淦澉绀橄旰矸疳酐" };
const UINT8    PY_mb_gang[]  = { "刚钢缸纲岗港杠冈肛扛戆罡筻" };
const UINT8    PY_mb_gao[]   = { "高搞告稿膏篙皋羔糕镐睾诰郜藁缟槔槁杲锆" };
const UINT8    PY_mb_ge[]    = { "个各革合格割歌隔盖哥葛铬阁戈搁鸽胳疙蛤咯屹鬲仡哿圪塥嗝纥搿膈硌镉袼颌虼舸骼" };
const UINT8    PY_mb_gei[]   = { "给" };
const UINT8    PY_mb_gen[]   = { "根跟亘茛哏艮" };
const UINT8    PY_mb_geng[]  = { "更耕颈庚羹埂耿梗哽赓绠鲠" };
const UINT8    PY_mb_gong[]  = { "工公共供功攻红巩贡汞宫恭龚躬弓拱珙肱蚣觥" };
const UINT8    PY_mb_gou[]   = { "够构沟句狗钩勾购苟垢佝诟岣遘媾缑枸觏彀笱篝鞲" };
const UINT8    PY_mb_gu[]    = { "鼓固古骨故顾股谷估雇孤姑贾辜菇咕箍沽蛊嘏诂菰呱崮汩梏轱牯牿臌毂瞽罟钴锢鸪鹄痼蛄酤觚鲴鹘" };
const UINT8    PY_mb_gua[]   = { "挂刮瓜括剐寡褂卦诖呱栝胍鸹" };
const UINT8    PY_mb_guai[]  = { "怪乖拐掴" };
const UINT8    PY_mb_guan[]  = { "关管观官灌贯惯冠馆罐棺纶倌莞掼涫盥鹳矜鳏" };
const UINT8    PY_mb_guang[] = { "光广逛咣犷桄胱" };
const UINT8    PY_mb_gui[]   = { "规贵归硅鬼轨龟桂瑰圭闺诡癸柜跪刽傀炔匦刿庋宄妫桧炅晷皈簋鲑鳜" };
const UINT8    PY_mb_gun[]   = { "滚辊棍衮绲磙鲧" };
const UINT8    PY_mb_guo[]   = { "国过果锅郭涡裹馘埚掴呙帼崞猓椁虢聒蜾蝈" };
const UINT8    PY_mb_h[]     = { "和会后何黄胡洪侯贺霍扈韩华郝化好合还活很回号毫花或海话红火害" };
const UINT8    PY_mb_ha[]    = { "哈蛤虾铪" };
const UINT8    PY_mb_hai[]   = { "还海害孩骸氦亥骇嘿咳嗨胲醢" };
const UINT8    PY_mb_han[]   = { "含焊旱喊汉寒汗函韩酣憨邯涵罕翰撼捍憾悍邗菡撖阚瀚晗焓顸颔蚶鼾" };
const UINT8    PY_mb_hang[]  = { "行航夯杭吭巷沆绗珩颃" };
const UINT8    PY_mb_hao[]   = { "好号毫耗豪郝浩镐壕嚎貉蒿薅嗥嚆濠灏昊皓颢蚝" };
const UINT8    PY_mb_he[]    = { "和合河何核赫荷褐喝贺呵禾吓盒菏貉阂涸鹤诃劾壑嗬阖纥曷盍颌蚵翮" };
const UINT8    PY_mb_hei[]   = { "黑嘿嗨" };
const UINT8    PY_mb_hen[]   = { "很狠痕恨" };
const UINT8    PY_mb_heng[]  = { "横衡恒哼亨蘅行珩桁" };
const UINT8    PY_mb_hong[]  = { "红洪轰烘哄虹鸿宏弘黉訇讧荭蕻薨闳泓" };
const UINT8    PY_mb_hou[]   = { "后候厚侯喉猴吼堠後逅瘊篌糇鲎骺" };
const UINT8    PY_mb_hu[]    = { "和护互湖呼户弧乎胡糊虎忽核瑚戏壶葫蝴狐唬沪冱唿囫岵猢怙惚浒滹琥槲轷觳烀煳戽扈祜瓠鹄鹕鹱笏醐斛" };
const UINT8    PY_mb_hua[]   = { "化花话划滑华画哗猾豁骅桦砉铧" };
const UINT8    PY_mb_huai[]  = { "坏怀划淮槐徊踝" };
const UINT8    PY_mb_huan[]  = { "还环换欢缓患幻焕桓唤痪豢涣宦郇奂萑擐圜獾洹浣漶寰逭缳锾鲩鬟" };
const UINT8    PY_mb_huang[] = { "黄簧荒皇慌蝗磺凰惶煌晃幌恍谎隍徨湟潢遑璜肓癀蟥篁鳇" };
const UINT8    PY_mb_hui[]   = { "会回灰挥辉汇毁慧恢绘惠徽溃堕徊蛔悔卉晦贿秽烩讳诲诙茴荟蕙咴哕喙隳洄浍彗缋珲桧晖恚虺蟪麾" };
const UINT8    PY_mb_hun[]   = { "混浑荤昏婚魂诨馄阍溷" };
const UINT8    PY_mb_huo[]   = { "和活或火货获伙霍豁惑祸劐藿攉嚯夥钬锪镬耠蠖" };
const UINT8    PY_mb_j[]     = { "级贾江蒋姜焦金靳晋就进加经家结阶间件及解较机军接教极九见" };
const UINT8    PY_mb_ji[]    =
{
    "级及机极几积给基其记己期系革计集即际季激济技击继急剂既纪寄挤鸡迹绩齐奇吉脊辑籍疾肌棘畸圾稽箕饥讥姬缉汲嫉蓟冀伎祭悸寂忌妓藉丌亟乩剞佶偈诘墼芨芰荠蒺蕺掎叽咭哜唧岌嵴洎屐骥畿玑楫殛戟戢赍觊犄齑矶羁嵇稷瘠虮笈笄暨跻跽霁鲚鲫髻麂"
};
const UINT8    PY_mb_jia[]  = { "加家架价甲夹假钾贾稼驾嘉枷佳荚颊嫁茄挟嘏伽郏葭岬浃迦珈戛胛恝铗镓痂瘕袷蛱笳袈跏" };
const UINT8    PY_mb_jian[] =
{
    "间件见建坚减检践尖简碱剪艰渐肩键健柬鉴剑歼监兼浅奸箭茧舰俭笺煎缄硷拣捡荐槛贱饯溅涧僭谏谫菅蒹搛囝湔蹇謇缣枧楗戋戬牮犍毽腱睑锏鹣裥笕翦趼踺鲣鞯"
};
const UINT8    PY_mb_jiang[] = { "将降讲强江浆蒋奖疆僵姜桨匠酱茳洚绛缰犟礓耩糨豇" };
const UINT8    PY_mb_jiao[]  = { "较教交角叫脚胶浇焦觉校蕉搅酵郊铰窖椒礁骄娇嚼矫侥狡饺缴绞剿轿佼僬艽茭挢噍峤徼姣敫皎鹪蛟醮跤鲛" };
const UINT8    PY_mb_jie[]   = { "结阶解接节家界截介借价届街揭洁杰竭皆秸劫桔捷睫姐戒藉芥疥诫楷偈讦诘拮喈嗟婕孑桀碣疖颉蚧羯鲒骱" };
const UINT8    PY_mb_jin[]   = { "进金近紧斤今尽仅劲浸禁津筋锦晋巾襟谨靳烬卺荩堇噤馑廑妗缙瑾槿赆觐衿矜" };
const UINT8    PY_mb_jing[]  = { "经精京径井静竟晶净境镜景警劲茎敬惊睛竞荆兢鲸粳痉靖刭儆阱菁獍憬泾迳弪婧肼胫腈旌靓" };
const UINT8    PY_mb_jiong[] = { "炯窘迥炅扃" };
const UINT8    PY_mb_jiu[]   = { "就九旧究久救酒纠揪玖韭灸厩臼舅咎疚僦啾阄柩桕鸠鹫赳鬏" };
const UINT8    PY_mb_ju[]    = { "具据局举车句聚距巨居锯剧矩拒柜桔鞠拘狙疽驹菊咀沮踞俱惧炬倨讵苣苴莒掬遽屦琚枸椐榘榉橘犋飓钜锔窭裾趄醵踽龃雎瞿鞫" };
const UINT8    PY_mb_juan[]  = { "卷捐鹃娟倦眷绢俊鄄狷涓桊蠲锩镌隽" };
const UINT8    PY_mb_jue[]   = { "决觉绝角脚掘嚼撅攫抉倔爵诀厥劂谲矍蕨嗟噘噱崛獗孓珏桷橛爝镢蹶觖巨额" };
const UINT8    PY_mb_jun[]   = { "军均菌君龟钧峻俊竣浚郡骏捃皲筠麇" };
const UINT8    PY_mb_k[]     = { "可开看蒯克孔邝寇科口空苦快考刻靠况块困宽矿抗卡" };
const UINT8    PY_mb_ka[]    = { "卡喀咖咯佧咔胩" };
const UINT8    PY_mb_kai[]   = { "开凯揩楷慨剀垲蒈忾恺铠锎锴" };
const UINT8    PY_mb_kan[]   = { "看刊坎槛堪勘砍嵌侃莰阚戡龛瞰" };
const UINT8    PY_mb_kang[]  = { "抗康炕慷糠扛亢伉闶钪" };
const UINT8    PY_mb_kao[]   = { "考靠拷烤尻栲犒铐" };
const UINT8    PY_mb_ke[]    = { "可克科刻客壳颗棵柯呵坷苛磕咳渴课嗑岢恪溘骒缂珂轲氪瞌钶锞稞疴窠颏蝌髁" };
const UINT8    PY_mb_ken[]   = { "肯啃垦恳裉" };
const UINT8    PY_mb_keng[]  = { "坑吭铿" };
const UINT8    PY_mb_kong[]  = { "孔空控恐倥崆箜" };
const UINT8    PY_mb_kou[]   = { "口扣抠寇芤蔻叩眍筘" };
const UINT8    PY_mb_ku[]    = { "苦库枯酷哭窟裤刳堀喾绔骷" };
const UINT8    PY_mb_kua[]   = { "跨夸垮挎胯侉" };
const UINT8    PY_mb_kuai[]  = { "会快块筷侩蒯郐哙狯浍脍" };
const UINT8    PY_mb_kuan[]  = { "宽款髋" };
const UINT8    PY_mb_kuang[] = { "况矿狂框匡筐眶旷诓诳邝圹夼哐纩贶" };
const UINT8    PY_mb_kui[]   = { "奎溃馈亏盔岿窥葵魁傀愧馗匮夔隗蒉揆喹喟悝愦逵暌睽聩蝰篑跬" };
const UINT8    PY_mb_kun[]   = { "困昆坤捆悃阃琨锟醌鲲髡" };
const UINT8    PY_mb_kuo[]   = { "扩括适阔廓栝蛞" };
const UINT8    PY_mb_l[]     = { "了来赖罗吕刘鲁李林雷廖卢梁厉廉陆龙黎鹿量理路里论两利领流力立料连老六轮类列" };
const UINT8    PY_mb_la[]    = { "拉落啦蜡腊蓝垃喇辣剌邋旯砬瘌" };
const UINT8    PY_mb_lai[]   = { "来赖莱崃徕涞濑赉睐铼癞籁" };
const UINT8    PY_mb_lan[]   = { "兰烂蓝览栏婪拦篮阑澜谰揽懒缆滥岚漤榄斓罱镧褴" };
const UINT8    PY_mb_lang[]  = { "浪朗郎狼琅榔廊莨蒗啷阆锒稂螂" };
const UINT8    PY_mb_lao[]   = { "老劳落牢涝捞络佬姥酪烙潦唠崂栳铑铹痨耢醪" };
const UINT8    PY_mb_le[]    = { "了乐勒肋仂叻泐鳓" };
const UINT8    PY_mb_lei[]   = { "类雷累勒垒泪镭蕾磊儡擂肋羸诔嘞嫘缧檑耒酹" };
const UINT8    PY_mb_leng[]  = { "冷棱楞塄愣" };
const UINT8    PY_mb_li[]    =
{
    "理里利力立离例历粒厘礼李隶黎璃励犁梨丽厉篱狸漓鲤莉荔吏栗砾傈俐痢沥哩鬲俪俚郦坜苈莅蓠藜呖唳喱猁悝溧澧逦娌嫠骊缡枥栎轹戾砺詈罹锂鹂疠疬蛎蜊蠡笠篥粝醴跞雳鲡鳢黧"
};
const UINT8    PY_mb_lia[]   = { "俩" };
const UINT8    PY_mb_lian[]  = { "连联练炼脸链莲镰廉怜涟帘敛恋蔹奁潋濂琏楝殓臁裢裣蠊鲢立案" };
const UINT8    PY_mb_liang[] = { "量两粮良亮梁凉辆粱晾谅墚莨椋踉靓魉" };
const UINT8    PY_mb_liao[]  = { "了料疗辽僚撩聊燎寥潦撂镣廖蓼尥嘹獠寮缭钌鹩" };
const UINT8    PY_mb_lie[]   = { "列裂烈劣猎冽埒捩咧洌趔躐鬣" };
const UINT8    PY_mb_lin[]   = { "林磷临邻淋麟琳霖鳞凛赁吝蔺啉嶙廪懔遴檩辚膦瞵粼躏" };
const UINT8    PY_mb_ling[]  = { "领另零令灵岭铃龄凌棱陵拎玲菱伶羚酃苓呤囹泠绫柃棂瓴聆蛉翎鲮" };
const UINT8    PY_mb_liu[]   = { "流六留刘硫柳陆馏瘤溜琉榴碌浏遛骝绺旒熘锍镏鹨鎏" };
const UINT8    PY_mb_lo[]    = { "咯" };
const UINT8    PY_mb_long[]  = { "龙垄弄笼隆聋咙窿拢陇垅茏泷珑栊胧砻癃" };
const UINT8    PY_mb_lou[]   = { "漏露楼娄搂篓陋偻蒌喽嵝镂瘘耧蝼髅" };
const UINT8    PY_mb_lu[]    = { "路录陆炉露芦卢颅庐掳卤虏鲁麓碌赂鹿潞禄戮垆撸噜泸渌漉逯璐栌橹轳辂辘氇胪镥鸬鹭簏舻鲈六绿" };
const UINT8    PY_mb_luan[]  = { "卵乱峦挛孪滦脔娈栾鸾銮" };
const UINT8    PY_mb_lue[]   = { "略掠锊" };
const UINT8    PY_mb_lun[]   = { "论轮伦抡仑沦纶囵" };
const UINT8    PY_mb_luo[]   = { "落罗螺洛络逻咯烙萝锣箩骡裸骆倮蠃荦捋摞猡泺漯珞椤脶硌镙瘰雒" };
const UINT8    PY_mb_lv[]    = { "率律旅虑驴吕铝侣履屡缕氯滤绿捋闾榈膂稆褛偻" };
const UINT8    PY_mb_m[]     = { "面命马孟穆梅糜们民毛茅苗莫没米明么每门名磨美密满亩目呒" };
const UINT8    PY_mb_ma[]    = { "马么麻吗妈骂嘛码摩抹玛蚂唛犸嬷杩蟆" };
const UINT8    PY_mb_mai[]   = { "麦脉卖买埋迈劢荬霾" };
const UINT8    PY_mb_man[]   = { "满慢曼漫蔓瞒馒蛮谩墁幔缦熳镘颟螨鳗鞔" };
const UINT8    PY_mb_mang[]  = { "忙芒盲茫氓莽邙漭硭蟒" };
const UINT8    PY_mb_mao[]   = { "毛矛冒貌贸帽猫茅锚铆卯茂袤茆峁泖瑁昴牦耄旄懋瞀蟊髦" };
const UINT8    PY_mb_me[]    = { "么麽" };
const UINT8    PY_mb_mei[]   = { "没每美煤霉酶梅妹眉玫枚媒镁昧寐媚糜谜莓嵋猸浼湄楣镅鹛袂魅" };
const UINT8    PY_mb_men[]   = { "们门闷扪焖懑钔" };
const UINT8    PY_mb_meng[]  = { "孟猛蒙盟梦萌锰氓檬勐甍瞢懵朦礞虻蜢蠓艋艨" };
const UINT8    PY_mb_mi[]    = { "米密迷蜜秘眯醚靡糜谜弥觅泌幂芈谧蘼咪嘧猕汨宓弭脒祢敉糸縻麋" };
const UINT8    PY_mb_mian[]  = { "面棉免绵眠冕勉娩缅沔渑湎腼眄" };
const UINT8    PY_mb_miao[]  = { "苗秒描庙妙瞄藐渺喵邈缈缪杪淼眇鹋" };
const UINT8    PY_mb_mie[]   = { "灭蔑乜咩蠛篾" };
const UINT8    PY_mb_min[]   = { "民敏抿皿悯闽苠岷闵泯缗玟珉愍黾鳘" };
const UINT8    PY_mb_ming[]  = { "命明名鸣螟盟铭冥茗溟暝瞑酩" };
const UINT8    PY_mb_miu[]   = { "谬缪" };
const UINT8    PY_mb_mo[]    = { "无磨没万末模膜摸墨摩脉莫抹冒默貉嘿摹蘑魔沫漠寞陌谟茉蓦馍嫫殁镆秣瘼耱貊貘" };
const UINT8    PY_mb_mou[]   = { "某谋牟侔哞缪眸蛑蝥鍪" };
const UINT8    PY_mb_mu[]    = { "亩目木母墓模幕牧姆穆姥牟拇牡暮募慕睦仫坶苜沐毪钼" };
const UINT8    PY_mb_n[]     = { "年能内那聂农你南难呢女泥哪拿念牛宁脑粘尼纳嗯" };
const UINT8    PY_mb_na[]    = { "那南哪拿纳呢钠呐娜捺肭镎衲" };
const UINT8    PY_mb_nai[]   = { "耐哪奶乃氖奈鼐艿萘柰" };
const UINT8    PY_mb_nan[]   = { "南难男喃囝囡楠腩蝻赧" };
const UINT8    PY_mb_nang[]  = { "囊攮囔馕曩" };
const UINT8    PY_mb_nao[]   = { "脑闹努挠恼淖孬垴呶猱瑙硇铙蛲" };
const UINT8    PY_mb_ne[]    = { "呢哪呐讷" };
const UINT8    PY_mb_nei[]   = { "内那哪馁" };
const UINT8    PY_mb_nen[]   = { "嫩恁" };
const UINT8    PY_mb_neng[]  = { "能" };
const UINT8    PY_mb_ni[]    = { "你泥尼呢逆拟尿妮霓倪匿腻溺伲坭猊怩昵旎祢慝睨铌鲵" };
const UINT8    PY_mb_nian[]  = { "年念粘蔫拈碾撵捻酿廿埝辇黏鲇鲶" };
const UINT8    PY_mb_niang[] = { "娘酿" };
const UINT8    PY_mb_niao[]  = { "尿鸟溺茑嬲脲袅" };
const UINT8    PY_mb_nie[]   = { "镍啮涅捏聂孽镊乜陧蘖嗫颞臬蹑" };
const UINT8    PY_mb_nin[]   = { "您恁" };
const UINT8    PY_mb_ning[]  = { "宁凝拧柠狞泞佞苎咛甯聍" };
const UINT8    PY_mb_niu[]   = { "牛扭钮纽拗狃忸妞" };
const UINT8    PY_mb_nong[]  = { "农弄浓脓侬哝" };
const UINT8    PY_mb_nou[]   = { "耨" };
const UINT8    PY_mb_nu[]    = { "努奴怒弩胬孥驽" };
const UINT8    PY_mb_nuan[]  = { "暖" };
const UINT8    PY_mb_nuo[]   = { "诺娜挪懦糯傩搦喏锘" };
const UINT8    PY_mb_nv[]    = { "女恧钕衄" };
const UINT8    PY_mb_nve[]   = { "虐疟" };
const UINT8    PY_mb_o[]     = { "哦喔噢欧偶鸥殴藕呕怄耦" };
const UINT8    PY_mb_ou[]    = { "区欧偶鸥殴藕呕沤讴怄瓯耦" };
const UINT8    PY_mb_p[]     = { "批平判潘彭庞裴蒲配片派破排品皮喷盘偏评怕培普贫跑炮" };
const UINT8    PY_mb_pa[]    = { "怕派爬帕扒耙啪趴琶葩杷钯筢" };
const UINT8    PY_mb_pai[]   = { "派排拍牌迫哌徘湃俳蒎" };
const UINT8    PY_mb_pan[]   = { "判盘叛番潘攀磐盼畔胖拚爿泮袢襻蟠蹒" };
const UINT8    PY_mb_pang[]  = { "旁膀磅乓庞耪胖彷滂逄螃" };
const UINT8    PY_mb_pao[]   = { "跑炮刨抛泡咆袍匏狍庖脬疱" };
const UINT8    PY_mb_pei[]   = { "配培陪胚呸裴赔佩沛辔帔旆锫醅霈" };
const UINT8    PY_mb_pen[]   = { "喷盆湓" };
const UINT8    PY_mb_peng[]  = { "碰棚蓬朋捧膨砰抨烹澎彭硼篷鹏堋嘭怦蟛" };
const UINT8    PY_mb_pi[]    = { "批皮坏否辟坯脾疲砒霹披劈琵毗啤匹痞僻屁譬丕仳陂陴邳郫圮埤鼙芘擗吡噼庀淠媲纰枇甓睥罴铍癖裨疋蚍蜱貔" };
const UINT8    PY_mb_pian[]  = { "片偏便篇骗扁谝骈缏犏胼翩蹁" };
const UINT8    PY_mb_piao[]  = { "票漂朴飘瓢剽莩嘌嫖骠缥殍瞟螵" };
const UINT8    PY_mb_pie[]   = { "撇瞥丿苤氕" };
const UINT8    PY_mb_pin[]   = { "品贫频拼苹聘拚姘嫔榀牝颦" };
const UINT8    PY_mb_ping[]  = { "平评瓶凭苹冯乒坪萍屏俜娉枰鲆冖" };
const UINT8    PY_mb_po[]    = { "破迫坡泼繁朴泊颇婆魄粕叵陂鄱泺珀攴钋钷钹皤笸" };
const UINT8    PY_mb_pou[]   = { "剖裒掊" };
const UINT8    PY_mb_pu[]    = { "普谱扑埔铺暴葡朴蒲堡脯仆莆菩圃浦曝瀑匍噗溥濮璞氆镤镨蹼" };
const UINT8    PY_mb_q[]     = { "起前其钱乔齐祁秦屈邱戚瞿去气全期群情区强切取七求清确权且青" };
const UINT8    PY_mb_qi[]    =
{
    "起其气期七器齐奇汽企漆欺旗畦启弃歧稽缉栖戚妻凄柒沏棋崎脐祈祁骑岂乞契砌迄泣讫亟亓俟圻芑芪荠萁萋葺蕲嘁屺岐岖汔淇骐绮琪琦杞桤槭耆欹祺憩碛颀蛴蜞綦綮蹊鳍麒"
};
const UINT8    PY_mb_qia[]   = { "卡恰掐洽伽葜袷髂" };
const UINT8    PY_mb_qian[]  = { "前千钱浅签迁铅潜牵钳纤谴扦钎仟谦乾黔遣堑嵌欠歉倩佥阡芊芡茜荨掮岍悭慊骞搴褰缱椠犍肷愆钤虔箬箝" };
const UINT8    PY_mb_qiang[] = { "强将枪抢墙腔呛羌蔷戕嫱樯戗炝锖锵镪襁蜣羟跄" };
const UINT8    PY_mb_qiao[]  = { "桥瞧壳巧敲乔蕉橇锹悄侨鞘撬翘峭俏窍雀劁诮谯荞峤愀憔缲樵硗跷鞒" };
const UINT8    PY_mb_qie[]   = { "切且砌茄怯窃伽郄惬慊妾挈锲箧" };
const UINT8    PY_mb_qin[]   = { "亲侵勤秦钦琴芹擒禽寝沁芩揿吣嗪噙廑溱檎锓矜覃螓衾" };
const UINT8    PY_mb_qing[]  = { "情清青轻倾请亲庆氢晴卿擎氰顷苘圊檠磬蜻罄箐綮謦鲭黥" };
const UINT8    PY_mb_qiong[] = { "穷琼邛茕穹蛩筇跫銎" };
const UINT8    PY_mb_qiu[]   = { "求球秋丘仇龟邱囚酋泅俅巯犰湫逑遒楸赇虬蚯蝤裘糗鳅鼽" };
const UINT8    PY_mb_qu[]    = { "去区取曲且渠屈趋驱趣蛆躯娶龋戌诎劬苣蕖蘧岖衢阒璩觑氍朐祛磲鸲癯蛐蠼麴瞿黢" };
const UINT8    PY_mb_quan[]  = { "全权圈劝泉醛颧痊拳犬券诠荃悛绻辁畎铨蜷筌鬈" };
const UINT8    PY_mb_que[]   = { "确却缺炔瘸鹊榷雀阕阙悫" };
const UINT8    PY_mb_qun[]   = { "群裙逡" };
const UINT8    PY_mb_r[]     = { "人如日阮荣认入任热然容让润弱燃染壤绕仁溶刃仍" };
const UINT8    PY_mb_ran[]   = { "然燃染冉苒蚺髯" };
const UINT8    PY_mb_rang[]  = { "让壤嚷瓤攘禳穰" };
const UINT8    PY_mb_rao[]   = { "绕扰饶荛娆桡" };
const UINT8    PY_mb_re[]    = { "热若惹" };
const UINT8    PY_mb_ren[]   = { "人认任仁刃忍壬韧妊纫仞荏葚饪轫稔衽" };
const UINT8    PY_mb_reng[]  = { "仍扔" };
const UINT8    PY_mb_ri[]    = { "日" };
const UINT8    PY_mb_rong[]  = { "容溶荣熔融绒戎茸蓉冗嵘狨榕肜蝾" };
const UINT8    PY_mb_rou[]   = { "肉揉柔糅蹂鞣" };
const UINT8    PY_mb_ru[]    = { "如入儒乳茹蠕孺辱汝褥蓐薷嚅洳溽濡缛铷襦颥" };
const UINT8    PY_mb_ruan[]  = { "软阮朊" };
const UINT8    PY_mb_rui[]   = { "瑞锐蕊芮蕤枘睿蚋" };
const UINT8    PY_mb_run[]   = { "润闰" };
const UINT8    PY_mb_ruo[]   = { "弱若偌箬" };
const UINT8    PY_mb_s[]     = { "是上时孙宋苏沈粟施邵佘申师帅沙隋石史生说社深水所三十使事数四实少式山手" };
const UINT8    PY_mb_sa[]    = { "撒萨洒卅仨挲脎飒" };
const UINT8    PY_mb_sai[]   = { "塞思赛腮鳃噻" };
const UINT8    PY_mb_san[]   = { "三散叁伞馓毵糁" };
const UINT8    PY_mb_sang[]  = { "桑丧嗓搡磉颡" };
const UINT8    PY_mb_sao[]   = { "扫梢搔骚嫂埽缫缲臊瘙鳋" };
const UINT8    PY_mb_se[]    = { "色塞瑟涩啬铯穑" };
const UINT8    PY_mb_sen[]   = { "森" };
const UINT8    PY_mb_seng[]  = { "僧" };
const UINT8    PY_mb_sh[]    = { "数厦山删商少召社设甚声市师始手收守书属术输双水谁睡税顺" };
const UINT8    PY_mb_sha[]   = { "沙杀砂啥纱莎刹傻煞杉厦唼嗄挲歃铩痧裟霎鲨" };
const UINT8    PY_mb_shai[]  = { "色筛晒" };
const UINT8    PY_mb_shan[]  = { "山单闪善珊扇陕掸苫杉删煽衫擅赡膳汕缮栅剡讪鄯埏芟潸姗嬗骟膻禅钐疝蟮舢跚鳝" };
const UINT8    PY_mb_shang[] = { "上商伤尚汤墒赏晌裳垧绱殇熵觞" };
const UINT8    PY_mb_shao[]  = { "少烧稍绍召哨梢鞘捎芍勺韶邵劭苕潲杓蛸筲艄" };
const UINT8    PY_mb_she[]   = { "社设射摄舌折涉舍蛇奢赊赦慑厍佘摺猞滠歙畲麝" };
const UINT8    PY_mb_shen[]  = { "深身神什伸参甚渗沈肾审申慎砷呻娠绅婶诜谂莘葚哂渖椹胂矧蜃" };
const UINT8    PY_mb_sheng[] = { "生胜声省升盛绳剩圣牲乘甥嵊渑晟眚笙" };
const UINT8    PY_mb_shi[]   =
{
    "是时十使事实式识世试石什示市史师始施士势湿适食失视室氏似蚀诗释殖拾饰驶匙狮尸虱矢屎柿拭誓逝嗜噬仕侍恃嘘峙谥埘莳蓍弑轼贳炻铈螫舐筮酾豕鲥鲺礻饣"
};
const UINT8    PY_mb_shou[]   = { "手受收首守熟授寿兽售瘦狩绶艏" };
const UINT8    PY_mb_shu[]    = { "数书树属术输述熟束鼠疏殊舒蔬薯叔署枢梳抒淑赎孰暑曙蜀黍戍竖墅庶漱恕俞丨倏塾菽摅沭澍姝纾毹腧殳秫" };
const UINT8    PY_mb_shua[]   = { "刷耍唰" };
const UINT8    PY_mb_shuai[]  = { "衰帅摔甩蟀" };
const UINT8    PY_mb_shuan[]  = { "栓拴闩涮" };
const UINT8    PY_mb_shuang[] = { "双霜爽泷孀" };
const UINT8    PY_mb_shui[]   = { "水说谁睡税" };
const UINT8    PY_mb_shun[]   = { "顺吮瞬舜" };
const UINT8    PY_mb_shuo[]   = { "说数硕朔烁蒴搠妁槊铄" };
const UINT8    PY_mb_si[]     = { "四思死斯丝似司饲食私厕撕嘶肆寺嗣伺巳厮俟兕厶咝汜泗澌姒驷缌祀锶鸶耜蛳笥" };
const UINT8    PY_mb_song[]   = { "松送宋颂耸怂讼诵凇菘崧嵩忪悚淞竦" };
const UINT8    PY_mb_sou[]    = { "搜艘擞嗽叟薮嗖嗾馊溲飕瞍锼螋" };
const UINT8    PY_mb_su[]     = { "素速苏塑缩俗诉宿肃酥粟僳溯夙谡蔌嗉愫涑簌觫稣" };
const UINT8    PY_mb_suan[]   = { "算酸蒜狻" };
const UINT8    PY_mb_sui[]    = { "随穗碎虽岁尿隋绥髓遂隧祟谇荽濉邃燧眭睢" };
const UINT8    PY_mb_sun[]    = { "损孙笋荪狲飧榫隼" };
const UINT8    PY_mb_suo[]    = { "所缩锁索莎蓑梭唆琐唢嗦嗍娑桫挲睃羧" };
const UINT8    PY_mb_t[]      = { "他同它唐谭陶汤童涂田佟提题体图天头通条特土团统台她太套铁" };
const UINT8    PY_mb_ta[]     = { "他它她塔踏塌獭挞蹋拓嗒闼溻漯遢榻沓铊趿鳎" };
const UINT8    PY_mb_tai[]    = { "台太态胎抬泰苔酞汰邰薹呔骀肽炱钛跆鲐" };
const UINT8    PY_mb_tan[]    = { "谈碳探炭弹坦贪滩坍摊瘫坛檀痰潭谭毯袒叹郯澹昙忐钽锬镡" };
const UINT8    PY_mb_tang[]   = { "堂糖唐塘汤搪棠膛倘躺淌趟烫傥帑溏瑭樘铴镗耥螗螳羰醣" };
const UINT8    PY_mb_tao[]    = { "套讨逃陶萄桃掏涛滔绦淘鼗叨啕洮韬焘饕" };
const UINT8    PY_mb_te[]     = { "特忒忑慝铽" };
const UINT8    PY_mb_teng[]   = { "腾疼藤誊滕" };
const UINT8    PY_mb_ti[]     = { "提题体替梯惕剔踢锑蹄啼嚏涕剃屉倜荑悌逖绨缇鹈裼醍扌" };
const UINT8    PY_mb_tian[]   = { "天田添填甜佃恬舔腆掭忝阗殄畋" };
const UINT8    PY_mb_tiao[]   = { "条调跳挑迢眺佻苕祧窕蜩笤粜龆鲦髫" };
const UINT8    PY_mb_tie[]    = { "铁贴帖萜餮" };
const UINT8    PY_mb_ting[]   = { "听停庭挺廷厅烃汀亭艇莛葶婷梃町铤蜓霆" };
const UINT8    PY_mb_tong[]   = { "同通统铜痛筒童桶侗恫桐酮瞳彤捅佟仝垌茼嗵峒恸潼砼" };
const UINT8    PY_mb_tou[]    = { "头投透偷钭骰" };
const UINT8    PY_mb_tu[]     = { "图土突途徒凸涂吐兔屠秃堍荼菟钍酴" };
const UINT8    PY_mb_tuan[]   = { "团湍抟彖疃图案" };
const UINT8    PY_mb_tui[]    = { "推退腿颓蜕褪忒煺" };
const UINT8    PY_mb_tun[]    = { "囤褪吞屯臀氽饨暾豚" };
const UINT8    PY_mb_tuo[]    = { "脱拖托妥椭舵魄鸵陀驮驼拓唾乇佗坨庹沱柝柁橐砣铊箨酡跎鼍" };
const UINT8    PY_mb_w[]      = { "为我无王汪卫魏吴韦闻乌邬翁温伍问外五位物委完温万文往武务围误晚" };
const UINT8    PY_mb_wa[]     = { "瓦挖凹哇蛙洼娃袜佤娲腽" };
const UINT8    PY_mb_wai[]    = { "外歪崴" };
const UINT8    PY_mb_wan[]    = { "完万晚弯碗顽湾挽玩蔓娩豌丸烷皖惋宛婉腕剜芄莞菀纨绾琬脘畹蜿" };
const UINT8    PY_mb_wang[]   = { "往王望网忘妄亡旺芒汪枉罔尢惘辋魍" };
const UINT8    PY_mb_wei[]    =
{
    "为位委围维唯卫微伟未威危尾谓喂味胃魏伪遗违韦畏纬巍桅惟潍苇萎蔚渭尉慰偎诿隈隗圩葳薇囗帏帷崴嵬猥猬闱沩洧涠逶娓玮韪軎炜煨痿艉鲔"
};
const UINT8    PY_mb_wen[]  = { "问温文稳纹闻蚊瘟吻紊刎阌汶璺雯亠" };
const UINT8    PY_mb_weng[] = { "嗡翁瓮蓊蕹" };
const UINT8    PY_mb_wo[]   = { "我握窝蜗涡沃挝卧斡倭莴喔幄渥肟硪龌" };
const UINT8    PY_mb_wu[]   =
{ "无五物武务误伍舞污悟雾午恶屋乌吴亡诬钨巫呜芜梧吾毋捂侮坞戊晤勿兀仵阢邬圬芴唔庑怃忤浯寤迕妩婺骛杌牾於焐鹉鹜痦蜈鋈鼯" };
const UINT8    PY_mb_x[]  = { "学下行许徐邢萧肖薛熊解项习冼小线性新些想心向相系席现西修象先形" };
const UINT8    PY_mb_xi[] =
{
    "系席西习细吸析喜洗铣稀戏隙希息袭锡烯牺悉惜溪腊栖昔熙硒矽晰嘻膝夕熄汐犀檄媳僖兮隰郗茜菥葸蓰奚唏徙饩阋浠淅屣嬉玺樨曦觋欷歙熹禊禧皙穸裼蜥螅蟋舄舾羲粞翕醯蹊鼷"
};
const UINT8    PY_mb_xia[]   = { "下夏吓狭霞唬瞎虾匣辖暇峡侠厦呷狎遐瑕柙硖瘕罅黠" };
const UINT8    PY_mb_xian[]  = { "线现先县限见显鲜献险陷宪纤洗掀弦铣腺锨仙咸贤衔舷闲涎嫌馅羡冼苋莶藓岘猃暹娴氙燹祆鹇痫蚬筅籼酰跣跹霰" };
const UINT8    PY_mb_xiang[] = { "想向相象响项箱乡降香像详橡享湘厢镶襄翔祥巷芗葙饷庠骧缃蟓鲞飨" };
const UINT8    PY_mb_xiao[]  = { "小消削效笑校销硝萧肖孝霄哮嚣宵淆晓啸哓崤潇逍骁绡枭枵蛸筱箫魈" };
const UINT8    PY_mb_xie[]   = { "些解写斜谢协械叶血卸屑鞋歇邪胁蟹泄泻契楔蝎挟携谐懈偕亵勰燮薤撷獬廨渫瀣邂绁缬榭榍颉躞" };
const UINT8    PY_mb_xin[]   = { "新心信锌芯辛寻欣薪忻衅囟馨昕歆镡鑫" };
const UINT8    PY_mb_xing[]  = { "行性形型星兴省醒姓幸腥猩惺刑邢杏陉荇荥擤饧悻硎" };
const UINT8    PY_mb_xiong[] = { "雄胸兄凶熊匈汹芎" };
const UINT8    PY_mb_xiu[]   = { "修锈休袖秀朽宿臭羞嗅绣咻岫馐庥溴鸺貅髹" };
const UINT8    PY_mb_xu[]    = { "续许须需序虚絮畜叙蓄绪徐墟戌嘘酗旭恤婿吁诩勖圩蓿洫浒溆顼栩煦砉盱胥糈醑" };
const UINT8    PY_mb_xuan[]  = { "选旋宣悬玄券轩喧癣眩绚儇谖萱揎泫渲漩璇楦暄炫煊碹铉镟痃" };
const UINT8    PY_mb_xue[]   = { "学血削雪穴靴薛谑噱泶踅鳕" };
const UINT8    PY_mb_xun[]   = { "训旬迅讯寻循巡荤浚勋熏询驯殉汛逊巽郇埙荀蕈薰峋徇獯恂洵浔曛窨醺鲟彐" };
const UINT8    PY_mb_y[]     = { "一有杨严余阎姚颜袁燕俞岳恽乐叶羊尹尤用要以于也样义与由压员月意又运原油验" };
const UINT8    PY_mb_ya[]    = { "压亚呀牙芽雅蚜鸭匹押鸦丫崖衙涯哑讶伢垭揠岈迓娅琊桠氩砑睚痖" };
const UINT8    PY_mb_yan[]   =
{
    "验研严颜眼言盐演岩沿烟延掩宴炎燕衍铅焉咽阉淹蜒阎奄艳堰厌砚雁唁彦焰谚殷厣赝剡俨偃兖谳阽郾鄢芫菸崦恹闫阏湮滟妍嫣琰檐晏胭腌焱罨筵酽魇餍鼹"
};
const UINT8    PY_mb_yang[] = { "样养氧扬洋阳羊秧央杨仰殃鸯佯疡痒漾徉怏泱炀烊恙蛘鞅" };
const UINT8    PY_mb_yao[]  = { "要药约摇腰咬邀耀陶侥疟妖瑶尧遥窑谣姚舀钥夭爻吆崾徭幺珧杳轺曜肴铫鹞窈繇鳐" };
const UINT8    PY_mb_ye[]   = { "也业页叶液夜野爷冶邪哗咽椰噎耶掖曳腋拽靥谒邺揶晔烨铘" };
const UINT8    PY_mb_yi[]   =
{
    "一以义意已移医议依易乙艺益异宜仪亿遗伊役衣疑亦谊翼译抑忆疫壹揖铱颐夷胰沂姨彝椅蚁倚矣邑屹臆逸肄裔毅溢诣翌绎刈劓仡佚佾诒圯埸懿苡荑薏弈奕挹弋呓咦咿嗌噫峄嶷猗饴怿怡悒漪迤驿缢殪轶贻欹旖熠眙钇镒镱痍瘗癔翊蜴舣羿翳酏黟衤"
};
const UINT8    PY_mb_yin[]  = { "因引阴印音银烟隐饮荫茵殷姻吟淫寅尹胤鄞圻垠堙茚吲喑狺夤洇湮氤铟瘾窨蚓霪龈" };
const UINT8    PY_mb_ying[] = { "应影硬营英映迎樱婴鹰缨莹萤荧蝇赢盈颖嬴郢茔荥莺萦蓥撄嘤膺滢潆瀛瑛璎楹媵鹦瘿颍罂" };
const UINT8    PY_mb_yo[]   = { "育哟唷" };
const UINT8    PY_mb_yong[] = { "用勇永拥涌蛹庸佣臃痈雍踊咏泳恿俑壅墉喁慵邕镛甬鳙饔" };
const UINT8    PY_mb_you[]  = { "有由又油右友优幼游尤诱犹幽悠忧邮铀酉佑釉卣攸侑莠莜莸尢呦囿宥柚猷牖铕疣蚰蚴蝣蝤繇鱿黝鼬" };
const UINT8    PY_mb_yu[]   =
{
    "于与育鱼雨玉余遇预域语愈渔予羽愚御谷欲宇蔚尉迂淤盂榆虞舆俞逾愉渝隅娱屿禹芋郁吁喻峪狱誉浴寓裕豫驭粥禺毓伛俣谀谕萸菀蓣揄圄圉嵛狳饫馀庾阈鬻妪妤纡瑜昱觎腴腧欤於煜熨燠聿钰鹆鹬瘐瘀窬窳蜮蝓竽臾舁雩龉肀"
};
const UINT8    PY_mb_yuan[]  = { "员原圆源元远愿院缘援园怨鸳渊冤垣袁辕猿苑垸塬芫掾圜沅媛瑗橼爰眢鸢螈箢鼋" };
const UINT8    PY_mb_yue[]   = { "月说越约乐跃曰阅钥岳粤悦龠瀹栎樾刖钺" };
const UINT8    PY_mb_yun[]   = { "运员云匀均允孕耘郧陨蕴酝晕韵郓芸狁恽愠纭韫殒昀氲熨" };
const UINT8    PY_mb_z[]     = { "在这主中张章赵曾郑周邹朱种着祝甄庄宗詹臧祖左展争战作正之制重组治只子自质指" };
const UINT8    PY_mb_za[]    = { "杂扎咱匝砸咋咂" };
const UINT8    PY_mb_zai[]   = { "在再载栽灾仔哉宰崽甾" };
const UINT8    PY_mb_zan[]   = { "赞咱暂攒拶瓒昝簪糌趱錾" };
const UINT8    PY_mb_zang[]  = { "藏脏葬赃奘驵臧" };
const UINT8    PY_mb_zao[]   = { "造早遭燥凿糟枣皂藻澡蚤躁噪灶唣" };
const UINT8    PY_mb_ze[]    = { "则择责侧泽咋仄赜啧帻迮昃笮箦舴" };
const UINT8    PY_mb_zei[]   = { "贼" };
const UINT8    PY_mb_zen[]   = { "怎谮" };
const UINT8    PY_mb_zeng[]  = { "增曾综憎赠缯甑罾锃" };
const UINT8    PY_mb_zh[]    = { "扎炸摘债战展长张章钟着照找这真争正政之制治只中周州主住抓转专撰赚装状准" };
const UINT8    PY_mb_zha[]   = { "查扎炸闸铡轧渣蜡喳札眨栅榨咋乍诈柞揸吒咤哳喋楂砟痄蚱齄" };
const UINT8    PY_mb_zhai[]  = { "寨侧择摘窄斋翟祭宅债砦瘵" };
const UINT8    PY_mb_zhan[]  = { "战展站占粘颤瞻毡詹沾盏斩辗崭蘸栈湛绽谵搌旃" };
const UINT8    PY_mb_zhang[] = { "长张章掌仗障胀涨账樟彰漳杖丈帐瘴仉鄣幛嶂獐嫜璋蟑" };
const UINT8    PY_mb_zhao[]  = { "着照找招朝召赵爪罩沼兆嘲昭肇诏啁棹钊笊" };
const UINT8    PY_mb_zhe[]   = { "这着者折哲浙遮蛰辙锗蔗谪摺柘辄磔鹧褶蜇赭" };
const UINT8    PY_mb_zhen[]  = { "真针阵镇振震珍诊斟甄砧臻贞侦枕疹圳蓁浈溱缜桢椹榛轸赈胗朕祯畛稹鸩箴" };
const UINT8    PY_mb_zheng[] = { "争正政整证征蒸症丁郑挣睁狰怔拯帧诤峥徵钲铮筝" };
const UINT8    PY_mb_zhi[]   =
{
    "之制治只质指直支织止至置志值知识执职植纸致枝殖脂智氏肢秩址滞汁芝吱蜘侄趾旨挚掷帜峙稚炙痔窒卮陟郅埴芷摭帙徵忮彘咫骘栉枳栀桎轵轾贽胝膣祉祗黹雉鸷痣蛭絷酯跖踬踯豸觯"
};
const UINT8    PY_mb_zhong[]  = { "中种重众钟终忠肿仲盅衷冢忪锺螽舯踵" };
const UINT8    PY_mb_zhou[]   = { "轴周洲州皱骤舟诌粥肘帚咒宙昼荮啁妯纣绉胄碡籀繇酎" };
const UINT8    PY_mb_zhu[]    = { "主注著住助猪朱铸属株筑柱术驻逐祝竹贮珠诸蛛诛烛煮拄瞩嘱蛀伫侏邾茱洙渚潴杼槠橥炷铢疰瘃褚竺箸舳翥躅麈" };
const UINT8    PY_mb_zhua[]   = { "抓爪挝" };
const UINT8    PY_mb_zhuai[]  = { "转曳拽嘬" };
const UINT8    PY_mb_zhuan[]  = { "转专传砖撰赚篆啭馔沌颛" };
const UINT8    PY_mb_zhuang[] = { "装状壮庄撞幢桩妆僮奘" };
const UINT8    PY_mb_zhui[]   = { "追锥椎赘坠缀惴骓缒" };
const UINT8    PY_mb_zhun[]   = { "准屯谆肫窀" };
const UINT8    PY_mb_zhuo[]   = { "着著捉桌缴拙卓琢茁酌啄灼浊倬诼擢浞涿濯棹焯禚斫镯" };
const UINT8    PY_mb_zi[]     = { "子自资字紫仔籽姿吱兹咨滋淄孜滓渍谘茈呲嵫姊孳缁梓辎赀恣眦锱秭耔笫粢趑觜訾龇鲻髭" };
const UINT8    PY_mb_zong[]   = { "总纵宗综棕鬃踪偬枞腙粽" };
const UINT8    PY_mb_zou[]    = { "走邹奏揍诹陬鄹驺鲰" };
const UINT8    PY_mb_zu[]     = { "组族足阻祖租卒诅俎菹镞" };
const UINT8    PY_mb_zuan[]   = { "钻赚纂攥缵躜" };
const UINT8    PY_mb_zui[]    = { "最罪嘴堆咀醉蕞" };
const UINT8    PY_mb_zun[]    = { "尊遵撙樽鳟" };
const UINT8    PY_mb_zuo[]    = { "作做左座坐昨撮凿搓琢佐柞阼唑嘬怍胙祚笮" };
const UINT8    PY_mb_1[]      = { "，。？" };

const T9PY_IDX t9PY_index[] =
{
    { "1",      " ",      sizeof(PY_mb_1),
      PY_mb_1 },
    { "2",      "a",      sizeof(PY_mb_a),
      PY_mb_a },
    { "2",      "b",      sizeof(PY_mb_b),
      PY_mb_b },
    { "2",      "c",      sizeof(PY_mb_c),
      PY_mb_c },
    { "3",      "d",      sizeof(PY_mb_d),
      PY_mb_d },
    { "3",      "e",      sizeof(PY_mb_e),
      PY_mb_e },
    { "3",      "f",      sizeof(PY_mb_f),
      PY_mb_f },
    { "4",      "g",      sizeof(PY_mb_g),
      PY_mb_g },
    { "4",      "h",      sizeof(PY_mb_h),
      PY_mb_h },
    { "5",      "j",      sizeof(PY_mb_j),
      PY_mb_j },
    { "5",      "k",      sizeof(PY_mb_k),
      PY_mb_k },
    { "5",      "l",      sizeof(PY_mb_l),
      PY_mb_l },
    { "6",      "m",      sizeof(PY_mb_m),
      PY_mb_m },
    { "6",      "n",      sizeof(PY_mb_n),
      PY_mb_n },
    { "6",      "o",      sizeof(PY_mb_o),
      PY_mb_o },
    { "7",      "p",      sizeof(PY_mb_p),
      PY_mb_p },
    { "7",      "q",      sizeof(PY_mb_q),
      PY_mb_q },
    { "7",      "r",      sizeof(PY_mb_r),
      PY_mb_r },
    { "7",      "s",      sizeof(PY_mb_s),
      PY_mb_s },
    { "8",      "t",      sizeof(PY_mb_t),
      PY_mb_t },
    { "9",      "w",      sizeof(PY_mb_w),
      PY_mb_w },
    { "9",      "x",      sizeof(PY_mb_x),
      PY_mb_x },
    { "9",      "y",      sizeof(PY_mb_y),
      PY_mb_y },
    { "9",      "z",      sizeof(PY_mb_z),
      PY_mb_z },
    { "22",     "ba",     sizeof(PY_mb_ba),
      PY_mb_ba },
    { "22",     "ca",     sizeof(PY_mb_ca),
      PY_mb_ca },
    { "23",     "ce",     sizeof(PY_mb_ce),
      PY_mb_ce },
    { "23",     "be",     sizeof(PY_mb_bei),
      PY_mb_bei },
    { "24",     "ai",     sizeof(PY_mb_ai),
      PY_mb_ai },
    { "24",     "bi",     sizeof(PY_mb_bi),
      PY_mb_bi },
    { "24",     "ch",     sizeof(PY_mb_ch),
      PY_mb_ch },
    { "24",     "ci",     sizeof(PY_mb_ci),
      PY_mb_ci },
    { "26",     "co",     sizeof(PY_mb_cou),
      PY_mb_cou },
    { "26",     "bo",     sizeof(PY_mb_bo),
      PY_mb_bo },
    { "26",     "an",     sizeof(PY_mb_an),
      PY_mb_an },
    { "26",     "ao",     sizeof(PY_mb_ao),
      PY_mb_ao },
    { "28",     "bu",     sizeof(PY_mb_bu),
      PY_mb_bu },
    { "28",     "cu",     sizeof(PY_mb_cu),
      PY_mb_cu },
    { "32",     "da",     sizeof(PY_mb_da),
      PY_mb_da },
    { "32",     "fa",     sizeof(PY_mb_fa),
      PY_mb_fa },
    { "33",     "de",     sizeof(PY_mb_de),
      PY_mb_de },
    { "33",     "fe",     sizeof(PY_mb_fei),
      PY_mb_fei },
    { "34",     "di",     sizeof(PY_mb_di),
      PY_mb_di },
    { "34",     "ei",     sizeof(PY_mb_ei),
      PY_mb_ei },
    { "36",     "en",     sizeof(PY_mb_en),
      PY_mb_en },
    { "36",     "fo",     sizeof(PY_mb_fo),
      PY_mb_fo },
    { "37",     "er",     sizeof(PY_mb_er),
      PY_mb_er },
    { "36",     "do",     sizeof(PY_mb_dou),
      PY_mb_dou },
    { "38",     "du",     sizeof(PY_mb_du),
      PY_mb_du },
    { "38",     "fu",     sizeof(PY_mb_fu),
      PY_mb_fu },
    { "42",     "ga",     sizeof(PY_mb_ga),
      PY_mb_ga },
    { "42",     "ha",     sizeof(PY_mb_ha),
      PY_mb_ha },
    { "43",     "ge",     sizeof(PY_mb_ge),
      PY_mb_ge },
    { "43",     "he",     sizeof(PY_mb_he),
      PY_mb_he },
    { "46",     "go",     sizeof(PY_mb_gou),
      PY_mb_gou },
    { "46",     "ho",     sizeof(PY_mb_hou),
      PY_mb_hou },
    { "48",     "gu",     sizeof(PY_mb_gu),
      PY_mb_gu },
    { "48",     "hu",     sizeof(PY_mb_hu),
      PY_mb_hu },
    { "52",     "ka",     sizeof(PY_mb_ka),
      PY_mb_ka },
    { "52",     "la",     sizeof(PY_mb_la),
      PY_mb_la },
    { "53",     "le",     sizeof(PY_mb_le),
      PY_mb_le },
    { "53",     "ke",     sizeof(PY_mb_ke),
      PY_mb_ke },
    { "54",     "ji",     sizeof(PY_mb_ji),
      PY_mb_ji },
    { "54",     "li",     sizeof(PY_mb_li),
      PY_mb_li },
    { "56",     "ko",     sizeof(PY_mb_kou),
      PY_mb_kou },
    { "56",     "lo",     sizeof(PY_mb_lo),
      PY_mb_lo },
    { "58",     "lu",     sizeof(PY_mb_lu),
      PY_mb_lu },
    { "58",     "lv",     sizeof(PY_mb_lv),
      PY_mb_lv },
    { "58",     "ju",     sizeof(PY_mb_ju),
      PY_mb_ju },
    { "58",     "ku",     sizeof(PY_mb_ku),
      PY_mb_ku },
    { "62",     "ma",     sizeof(PY_mb_ma),
      PY_mb_ma },
    { "62",     "na",     sizeof(PY_mb_na),
      PY_mb_na },
    { "63",     "me",     sizeof(PY_mb_me),
      PY_mb_me },
    { "63",     "ne",     sizeof(PY_mb_ne),
      PY_mb_ne },
    { "64",     "mi",     sizeof(PY_mb_mi),
      PY_mb_mi },
    { "64",     "ni",     sizeof(PY_mb_ni),
      PY_mb_ni },
    { "66",     "mo",     sizeof(PY_mb_mo),
      PY_mb_mo },
    { "66",     "no",     sizeof(PY_mb_nou),
      PY_mb_nou },
    { "68",     "mu",     sizeof(PY_mb_mu),
      PY_mb_mu },
    { "68",     "nu",     sizeof(PY_mb_nu),
      PY_mb_nu },
    { "68",     "nv",     sizeof(PY_mb_nv),
      PY_mb_nv },
    { "68",     "ou",     sizeof(PY_mb_ou),
      PY_mb_ou },
    { "72",     "pa",     sizeof(PY_mb_pa),
      PY_mb_pa },
    { "72",     "pe",     sizeof(PY_mb_pei),
      PY_mb_pei },
    { "72",     "ra",     sizeof(PY_mb_ran),
      PY_mb_ran },
    { "72",     "sa",     sizeof(PY_mb_sa),
      PY_mb_sa },
    { "73",     "re",     sizeof(PY_mb_re),
      PY_mb_re },
    { "73",     "se",     sizeof(PY_mb_se),
      PY_mb_se },
    { "74",     "pi",     sizeof(PY_mb_pi),
      PY_mb_pi },
    { "74",     "qi",     sizeof(PY_mb_qi),
      PY_mb_qi },
    { "74",     "ri",     sizeof(PY_mb_ri),
      PY_mb_ri },
    { "74",     "sh",     sizeof(PY_mb_sh),
      PY_mb_sh },
    { "74",     "si",     sizeof(PY_mb_si),
      PY_mb_si },
    { "76",     "so",     sizeof(PY_mb_sou),
      PY_mb_sou },
    { "76",     "po",     sizeof(PY_mb_po),
      PY_mb_po },
    { "76",     "ro",     sizeof(PY_mb_rou),
      PY_mb_rou },
    { "78",     "pu",     sizeof(PY_mb_pu),
      PY_mb_pu },
    { "78",     "qu",     sizeof(PY_mb_qu),
      PY_mb_qu },
    { "78",     "ru",     sizeof(PY_mb_ru),
      PY_mb_ru },
    { "78",     "su",     sizeof(PY_mb_su),
      PY_mb_su },
    { "82",     "ta",     sizeof(PY_mb_ta),
      PY_mb_ta },
    { "83",     "te",     sizeof(PY_mb_te),
      PY_mb_te },
    { "84",     "ti",     sizeof(PY_mb_ti),
      PY_mb_ti },
    { "86",     "to",     sizeof(PY_mb_tou),
      PY_mb_tou },
    { "88",     "tu",     sizeof(PY_mb_tu),
      PY_mb_tu },
    { "92",     "wa",     sizeof(PY_mb_wa),
      PY_mb_wa },
    { "92",     "ya",     sizeof(PY_mb_ya),
      PY_mb_ya },
    { "92",     "za",     sizeof(PY_mb_za),
      PY_mb_za },
    { "93",     "ze",     sizeof(PY_mb_ze),
      PY_mb_ze },
    { "93",     "ye",     sizeof(PY_mb_ye),
      PY_mb_ye },
    { "94",     "yi",     sizeof(PY_mb_yi),
      PY_mb_yi },
    { "94",     "xi",     sizeof(PY_mb_xi),
      PY_mb_xi },
    { "94",     "zh",     sizeof(PY_mb_zh),
      PY_mb_zh },
    { "94",     "zi",     sizeof(PY_mb_zi),
      PY_mb_zi },
    { "96",     "zo",     sizeof(PY_mb_zou),
      PY_mb_zou },
    { "96",     "wo",     sizeof(PY_mb_wo),
      PY_mb_wo },
    { "96",     "yo",     sizeof(PY_mb_yo),
      PY_mb_yo },
    { "98",     "wu",     sizeof(PY_mb_wu),
      PY_mb_wu },
    { "98",     "xu",     sizeof(PY_mb_xu),
      PY_mb_xu },
    { "98",     "yu",     sizeof(PY_mb_yu),
      PY_mb_yu },
    { "98",     "zu",     sizeof(PY_mb_zu),
      PY_mb_zu },
    { "224",    "bai",    sizeof(PY_mb_bai),
      PY_mb_bai },
    { "224",    "cai",    sizeof(PY_mb_cai),
      PY_mb_cai },
    { "226",    "can",    sizeof(PY_mb_can),
      PY_mb_can },
    { "226",    "cao",    sizeof(PY_mb_cao),
      PY_mb_cao },
    { "226",    "ban",    sizeof(PY_mb_ban),
      PY_mb_ban },
    { "226",    "bao",    sizeof(PY_mb_bao),
      PY_mb_bao },
    { "234",    "bei",    sizeof(PY_mb_bei),
      PY_mb_bei },
    { "236",    "ben",    sizeof(PY_mb_ben),
      PY_mb_ben },
    { "236",    "cen",    sizeof(PY_mb_cen),
      PY_mb_cen },
    { "242",    "bia",    sizeof(PY_mb_bian),
      PY_mb_bian },
    { "242",    "cha",    sizeof(PY_mb_cha),
      PY_mb_cha },
    { "243",    "che",    sizeof(PY_mb_che),
      PY_mb_che },
    { "243",    "bie",    sizeof(PY_mb_bie),
      PY_mb_bie },
    { "244",    "chi",    sizeof(PY_mb_chi),
      PY_mb_chi },
    { "246",    "bin",    sizeof(PY_mb_bin),
      PY_mb_bin },
    { "246",    "cho",    sizeof(PY_mb_chou),
      PY_mb_chou },
    { "248",    "chu",    sizeof(PY_mb_chu),
      PY_mb_chu },
    { "264",    "ang",    sizeof(PY_mb_ang),
      PY_mb_ang },
    { "266",    "con",    sizeof(PY_mb_cong),
      PY_mb_cong },
    { "268",    "cou",    sizeof(PY_mb_cou),
      PY_mb_cou },
    { "282",    "cua",    sizeof(PY_mb_cuan),
      PY_mb_cuan },
    { "284",    "cui",    sizeof(PY_mb_cui),
      PY_mb_cui },
    { "286",    "cun",    sizeof(PY_mb_cun),
      PY_mb_cun },
    { "286",    "cuo",    sizeof(PY_mb_cuo),
      PY_mb_cuo },
    { "324",    "dai",    sizeof(PY_mb_dai),
      PY_mb_dai },
    { "326",    "dan",    sizeof(PY_mb_dan),
      PY_mb_dan },
    { "326",    "dao",    sizeof(PY_mb_dao),
      PY_mb_dao },
    { "326",    "fan",    sizeof(PY_mb_fan),
      PY_mb_fan },
    { "334",    "fei",    sizeof(PY_mb_fei),
      PY_mb_fei },
    { "336",    "fen",    sizeof(PY_mb_fen),
      PY_mb_fen },
    { "336",    "den",    sizeof(PY_mb_deng),
      PY_mb_deng },
    { "342",    "dia",    sizeof(PY_mb_dia),
      PY_mb_dia },
    { "343",    "die",    sizeof(PY_mb_die),
      PY_mb_die },
    { "346",    "din",    sizeof(PY_mb_ding),
      PY_mb_ding },
    { "348",    "diu",    sizeof(PY_mb_diu),
      PY_mb_diu },
    { "366",    "don",    sizeof(PY_mb_dong),
      PY_mb_dong },
    { "368",    "dou",    sizeof(PY_mb_dou),
      PY_mb_dou },
    { "368",    "fou",    sizeof(PY_mb_fou),
      PY_mb_fou },
    { "382",    "dua",    sizeof(PY_mb_duan),
      PY_mb_duan },
    { "384",    "dui",    sizeof(PY_mb_dui),
      PY_mb_dui },
    { "386",    "dun",    sizeof(PY_mb_dun),
      PY_mb_dun },
    { "386",    "duo",    sizeof(PY_mb_duo),
      PY_mb_duo },
    { "424",    "gai",    sizeof(PY_mb_gai),
      PY_mb_gai },
    { "424",    "hai",    sizeof(PY_mb_hai),
      PY_mb_hai },
    { "426",    "han",    sizeof(PY_mb_han),
      PY_mb_han },
    { "426",    "gan",    sizeof(PY_mb_gan),
      PY_mb_gan },
    { "426",    "gao",    sizeof(PY_mb_gao),
      PY_mb_gao },
    { "426",    "hao",    sizeof(PY_mb_hao),
      PY_mb_hao },
    { "434",    "hei",    sizeof(PY_mb_hei),
      PY_mb_hei },
    { "434",    "gei",    sizeof(PY_mb_gei),
      PY_mb_gei },
    { "436",    "gen",    sizeof(PY_mb_gen),
      PY_mb_gen },
    { "436",    "hen",    sizeof(PY_mb_hen),
      PY_mb_hen },
    { "466",    "gon",    sizeof(PY_mb_gong),
      PY_mb_gong },
    { "466",    "hon",    sizeof(PY_mb_hong),
      PY_mb_hong },
    { "468",    "gou",    sizeof(PY_mb_gou),
      PY_mb_gou },
    { "468",    "hou",    sizeof(PY_mb_hou),
      PY_mb_hou },
    { "482",    "hua",    sizeof(PY_mb_hua),
      PY_mb_hua },
    { "482",    "gua",    sizeof(PY_mb_gua),
      PY_mb_gua },
    { "484",    "gui",    sizeof(PY_mb_gui),
      PY_mb_gui },
    { "484",    "hui",    sizeof(PY_mb_hui),
      PY_mb_hui },
    { "486",    "hun",    sizeof(PY_mb_hun),
      PY_mb_hun },
    { "486",    "huo",    sizeof(PY_mb_huo),
      PY_mb_huo },
    { "486",    "gun",    sizeof(PY_mb_gun),
      PY_mb_gun },
    { "486",    "guo",    sizeof(PY_mb_guo),
      PY_mb_guo },
    { "524",    "kai",    sizeof(PY_mb_kai),
      PY_mb_kai },
    { "524",    "lai",    sizeof(PY_mb_lai),
      PY_mb_lai },
    { "526",    "lan",    sizeof(PY_mb_lan),
      PY_mb_lan },
    { "526",    "kan",    sizeof(PY_mb_kan),
      PY_mb_kan },
    { "526",    "kao",    sizeof(PY_mb_kao),
      PY_mb_kao },
    { "526",    "lao",    sizeof(PY_mb_lao),
      PY_mb_lao },
    { "534",    "lei",    sizeof(PY_mb_lei),
      PY_mb_lei },
    { "536",    "len",    sizeof(PY_mb_leng),
      PY_mb_leng },
    { "536",    "ken",    sizeof(PY_mb_ken),
      PY_mb_ken },
    { "542",    "jia",    sizeof(PY_mb_jia),
      PY_mb_jia },
    { "542",    "lia",    sizeof(PY_mb_lia),
      PY_mb_lia },
    { "543",    "jie",    sizeof(PY_mb_jie),
      PY_mb_jie },
    { "543",    "lie",    sizeof(PY_mb_lie),
      PY_mb_lie },
    { "546",    "lin",    sizeof(PY_mb_lin),
      PY_mb_lin },
    { "546",    "jin",    sizeof(PY_mb_jin),
      PY_mb_jin },
    { "546",    "jio",    sizeof(PY_mb_jiong),
      PY_mb_jiong },
    { "548",    "jiu",    sizeof(PY_mb_jiu),
      PY_mb_jiu },
    { "548",    "liu",    sizeof(PY_mb_liu),
      PY_mb_liu },
    { "566",    "lon",    sizeof(PY_mb_long),
      PY_mb_long },
    { "566",    "kon",    sizeof(PY_mb_kong),
      PY_mb_kong },
    { "568",    "kou",    sizeof(PY_mb_kou),
      PY_mb_kou },
    { "568",    "lou",    sizeof(PY_mb_lou),
      PY_mb_lou },
    { "582",    "lua",    sizeof(PY_mb_luan),
      PY_mb_luan },
    { "582",    "kua",    sizeof(PY_mb_kua),
      PY_mb_kua },
    { "582",    "jua",    sizeof(PY_mb_juan),
      PY_mb_juan },
    { "583",    "jue",    sizeof(PY_mb_jue),
      PY_mb_jue },
    { "583",    "lue",    sizeof(PY_mb_lue),
      PY_mb_lue },
    { "584",    "kui",    sizeof(PY_mb_kui),
      PY_mb_kui },
    { "586",    "lun",    sizeof(PY_mb_lun),
      PY_mb_lun },
    { "586",    "luo",    sizeof(PY_mb_luo),
      PY_mb_luo },
    { "586",    "kun",    sizeof(PY_mb_kun),
      PY_mb_kun },
    { "586",    "kuo",    sizeof(PY_mb_kuo),
      PY_mb_kuo },
    { "586",    "jun",    sizeof(PY_mb_jun),
      PY_mb_jun },
    { "624",    "mai",    sizeof(PY_mb_mai),
      PY_mb_mai },
    { "624",    "nai",    sizeof(PY_mb_nai),
      PY_mb_nai },
    { "626",    "nan",    sizeof(PY_mb_nan),
      PY_mb_nan },
    { "626",    "man",    sizeof(PY_mb_man),
      PY_mb_man },
    { "626",    "mao",    sizeof(PY_mb_mao),
      PY_mb_mao },
    { "626",    "nao",    sizeof(PY_mb_nao),
      PY_mb_nao },
    { "634",    "nei",    sizeof(PY_mb_nei),
      PY_mb_nei },
    { "634",    "mei",    sizeof(PY_mb_mei),
      PY_mb_mei },
    { "636",    "nen",    sizeof(PY_mb_nen),
      PY_mb_nen },
    { "636",    "men",    sizeof(PY_mb_men),
      PY_mb_men },
    { "642",    "mia",    sizeof(PY_mb_mian),
      PY_mb_mian },
    { "642",    "nia",    sizeof(PY_mb_nian),
      PY_mb_nian },
    { "643",    "mie",    sizeof(PY_mb_mie),
      PY_mb_mie },
    { "643",    "nie",    sizeof(PY_mb_nie),
      PY_mb_nie },
    { "646",    "nin",    sizeof(PY_mb_nin),
      PY_mb_nin },
    { "646",    "min",    sizeof(PY_mb_min),
      PY_mb_min },
    { "648",    "miu",    sizeof(PY_mb_miu),
      PY_mb_miu },
    { "648",    "niu",    sizeof(PY_mb_niu),
      PY_mb_niu },
    { "666",    "non",    sizeof(PY_mb_nong),
      PY_mb_nong },
    { "668",    "mou",    sizeof(PY_mb_mou),
      PY_mb_mou },
    { "668",    "nou",    sizeof(PY_mb_nou),
      PY_mb_nou },
    { "682",    "nua",    sizeof(PY_mb_nuan),
      PY_mb_nuan },
    { "683",    "nve",    sizeof(PY_mb_nve),
      PY_mb_nve },
    { "686",    "nuo",    sizeof(PY_mb_nuo),
      PY_mb_nuo },
    { "724",    "pai",    sizeof(PY_mb_pai),
      PY_mb_pai },
    { "734",    "pei",    sizeof(PY_mb_pei),
      PY_mb_pei },
    { "724",    "sai",    sizeof(PY_mb_sai),
      PY_mb_sai },
    { "726",    "san",    sizeof(PY_mb_san),
      PY_mb_san },
    { "726",    "pan",    sizeof(PY_mb_pan),
      PY_mb_pan },
    { "726",    "pao",    sizeof(PY_mb_pao),
      PY_mb_pao },
    { "736",    "pen",    sizeof(PY_mb_pen),
      PY_mb_pen },
    { "726",    "ran",    sizeof(PY_mb_ran),
      PY_mb_ran },
    { "726",    "rao",    sizeof(PY_mb_rao),
      PY_mb_rao },
    { "726",    "sao",    sizeof(PY_mb_sao),
      PY_mb_sao },
    { "736",    "sen",    sizeof(PY_mb_sen),
      PY_mb_sen },
    { "736",    "ren",    sizeof(PY_mb_ren),
      PY_mb_ren },
    { "742",    "pia",    sizeof(PY_mb_pian),
      PY_mb_pian },
    { "742",    "qia",    sizeof(PY_mb_qia),
      PY_mb_qia },
    { "742",    "sha",    sizeof(PY_mb_sha),
      PY_mb_sha },
    { "743",    "pie",    sizeof(PY_mb_pie),
      PY_mb_pie },
    { "743",    "qie",    sizeof(PY_mb_qie),
      PY_mb_qie },
    { "743",    "she",    sizeof(PY_mb_she),
      PY_mb_she },
    { "744",    "shi",    sizeof(PY_mb_shi),
      PY_mb_shi },
    { "748",    "shu",    sizeof(PY_mb_shu),
      PY_mb_shu },
    { "746",    "qin",    sizeof(PY_mb_qin),
      PY_mb_qin },
    { "746",    "pin",    sizeof(PY_mb_pin),
      PY_mb_pin },
    { "746",    "qio",    sizeof(PY_mb_qiong),
      PY_mb_qiong },
    { "746",    "sho",    sizeof(PY_mb_shou),
      PY_mb_shou },
    { "748",    "qiu",    sizeof(PY_mb_qiu),
      PY_mb_qiu },
    { "766",    "ron",    sizeof(PY_mb_rong),
      PY_mb_rong },
    { "768",    "pou",    sizeof(PY_mb_pou),
      PY_mb_pou },
    { "768",    "rou",    sizeof(PY_mb_rou),
      PY_mb_rou },
    { "766",    "son",    sizeof(PY_mb_song),
      PY_mb_song },
    { "768",    "sou",    sizeof(PY_mb_sou),
      PY_mb_sou },
    { "782",    "sua",    sizeof(PY_mb_suan),
      PY_mb_suan },
    { "782",    "rua",    sizeof(PY_mb_ruan),
      PY_mb_ruan },
    { "782",    "qua",    sizeof(PY_mb_quan),
      PY_mb_quan },
    { "783",    "que",    sizeof(PY_mb_que),
      PY_mb_que },
    { "784",    "rui",    sizeof(PY_mb_rui),
      PY_mb_rui },
    { "784",    "sui",    sizeof(PY_mb_sui),
      PY_mb_sui },
    { "786",    "sun",    sizeof(PY_mb_sun),
      PY_mb_sun },
    { "786",    "suo",    sizeof(PY_mb_suo),
      PY_mb_suo },
    { "786",    "run",    sizeof(PY_mb_run),
      PY_mb_run },
    { "786",    "ruo",    sizeof(PY_mb_ruo),
      PY_mb_ruo },
    { "786",    "qun",    sizeof(PY_mb_qun),
      PY_mb_qun },
    { "824",    "tai",    sizeof(PY_mb_tai),
      PY_mb_tai },
    { "826",    "tan",    sizeof(PY_mb_tan),
      PY_mb_tan },
    { "826",    "tao",    sizeof(PY_mb_tao),
      PY_mb_tao },
    { "836",    "ten",    sizeof(PY_mb_teng),
      PY_mb_teng },
    { "842",    "tia",    sizeof(PY_mb_tian),
      PY_mb_tian },
    { "843",    "tie",    sizeof(PY_mb_tie),
      PY_mb_tie },
    { "846",    "tin",    sizeof(PY_mb_ting),
      PY_mb_ting },
    { "866",    "ton",    sizeof(PY_mb_tong),
      PY_mb_tong },
    { "868",    "tou",    sizeof(PY_mb_tou),
      PY_mb_tou },
    { "882",    "tua",    sizeof(PY_mb_tuan),
      PY_mb_tuan },
    { "884",    "tui",    sizeof(PY_mb_tui),
      PY_mb_tui },
    { "886",    "tun",    sizeof(PY_mb_tun),
      PY_mb_tun },
    { "886",    "tuo",    sizeof(PY_mb_tuo),
      PY_mb_tuo },
    { "924",    "wai",    sizeof(PY_mb_wai),
      PY_mb_wai },
    { "924",    "zai",    sizeof(PY_mb_zai),
      PY_mb_zai },
    { "926",    "zan",    sizeof(PY_mb_zan),
      PY_mb_zan },
    { "926",    "wan",    sizeof(PY_mb_wan),
      PY_mb_wan },
    { "926",    "yan",    sizeof(PY_mb_yan),
      PY_mb_yan },
    { "926",    "yao",    sizeof(PY_mb_yao),
      PY_mb_yao },
    { "926",    "zao",    sizeof(PY_mb_zao),
      PY_mb_zao },
    { "934",    "zei",    sizeof(PY_mb_zei),
      PY_mb_zei },
    { "934",    "wei",    sizeof(PY_mb_wei),
      PY_mb_wei },
    { "936",    "zen",    sizeof(PY_mb_zen),
      PY_mb_zen },
    { "936",    "wen",    sizeof(PY_mb_wen),
      PY_mb_wen },
    { "942",    "xia",    sizeof(PY_mb_xia),
      PY_mb_xia },
    { "942",    "zha",    sizeof(PY_mb_zha),
      PY_mb_zha },
    { "943",    "xie",    sizeof(PY_mb_xie),
      PY_mb_xie },
    { "943",    "zhe",    sizeof(PY_mb_zhe),
      PY_mb_zhe },
    { "944",    "zhi",    sizeof(PY_mb_zhi),
      PY_mb_zhi },
    { "946",    "zho",    sizeof(PY_mb_zhou),
      PY_mb_zhou },
    { "946",    "xin",    sizeof(PY_mb_xin),
      PY_mb_xin },
    { "946",    "xio",    sizeof(PY_mb_xiong),
      PY_mb_xiong },
    { "946",    "yin",    sizeof(PY_mb_yin),
      PY_mb_yin },
    { "948",    "xiu",    sizeof(PY_mb_xiu),
      PY_mb_xiu },
    { "948",    "zhu",    sizeof(PY_mb_zhu),
      PY_mb_zhu },
    { "966",    "yon",    sizeof(PY_mb_yong),
      PY_mb_yong },
    { "966",    "zon",    sizeof(PY_mb_zong),
      PY_mb_zong },
    { "968",    "you",    sizeof(PY_mb_you),
      PY_mb_you },
    { "968",    "zou",    sizeof(PY_mb_zou),
      PY_mb_zou },
    { "982",    "zua",    sizeof(PY_mb_zuan),
      PY_mb_zuan },
    { "982",    "yua",    sizeof(PY_mb_yuan),
      PY_mb_yuan },
    { "982",    "xua",    sizeof(PY_mb_xuan),
      PY_mb_xuan },
    { "983",    "xue",    sizeof(PY_mb_xue),
      PY_mb_xue },
    { "983",    "yue",    sizeof(PY_mb_yue),
      PY_mb_yue },
    { "984",    "zui",    sizeof(PY_mb_zui),
      PY_mb_zui },
    { "986",    "zun",    sizeof(PY_mb_zun),
      PY_mb_zun },
    { "986",    "zuo",    sizeof(PY_mb_zuo),
      PY_mb_zuo },
    { "986",    "yun",    sizeof(PY_mb_yun),
      PY_mb_yun },
    { "986",    "xun",    sizeof(PY_mb_xun),
      PY_mb_xun },
    { "2264",   "bang",   sizeof(PY_mb_bang),
      PY_mb_bang },
    { "2364",   "beng",   sizeof(PY_mb_beng),
      PY_mb_beng },
    { "2426",   "bian",   sizeof(PY_mb_bian),
      PY_mb_bian },
    { "2426",   "biao",   sizeof(PY_mb_biao),
      PY_mb_biao },
    { "2464",   "bing",   sizeof(PY_mb_bing),
      PY_mb_bing },
    { "2264",   "cang",   sizeof(PY_mb_cang),
      PY_mb_cang },
    { "2364",   "ceng",   sizeof(PY_mb_ceng),
      PY_mb_ceng },
    { "2424",   "chai",   sizeof(PY_mb_chai),
      PY_mb_chai },
    { "2426",   "chan",   sizeof(PY_mb_chan),
      PY_mb_chan },
    { "2426",   "chao",   sizeof(PY_mb_chao),
      PY_mb_chao },
    { "2436",   "chen",   sizeof(PY_mb_chen),
      PY_mb_chen },
    { "2466",   "chon",   sizeof(PY_mb_chong),
      PY_mb_chong },
    { "2468",   "chou",   sizeof(PY_mb_chou),
      PY_mb_chou },
    { "2482",   "chua",   sizeof(PY_mb_chuai),
      PY_mb_chuai },
    { "2484",   "chui",   sizeof(PY_mb_chui),
      PY_mb_chui },
    { "2486",   "chun",   sizeof(PY_mb_chun),
      PY_mb_chun },
    { "2486",   "chuo",   sizeof(PY_mb_chuo),
      PY_mb_chuo },
    { "2664",   "cong",   sizeof(PY_mb_cong),
      PY_mb_cong },
    { "2826",   "cuan",   sizeof(PY_mb_cuan),
      PY_mb_cuan },
    { "3264",   "dang",   sizeof(PY_mb_dang),
      PY_mb_dang },
    { "3264",   "fang",   sizeof(PY_mb_fang),
      PY_mb_fang },
    { "3364",   "feng",   sizeof(PY_mb_feng),
      PY_mb_feng },
    { "3364",   "deng",   sizeof(PY_mb_deng),
      PY_mb_deng },
    { "3426",   "dian",   sizeof(PY_mb_dian),
      PY_mb_dian },
    { "3426",   "diao",   sizeof(PY_mb_diao),
      PY_mb_diao },
    { "3464",   "ding",   sizeof(PY_mb_ding),
      PY_mb_ding },
    { "3664",   "dong",   sizeof(PY_mb_dong),
      PY_mb_dong },
    { "3826",   "duan",   sizeof(PY_mb_duan),
      PY_mb_duan },
    { "4264",   "gang",   sizeof(PY_mb_gang),
      PY_mb_gang },
    { "4364",   "geng",   sizeof(PY_mb_geng),
      PY_mb_geng },
    { "4664",   "gong",   sizeof(PY_mb_gong),
      PY_mb_gong },
    { "4824",   "guai",   sizeof(PY_mb_guai),
      PY_mb_guai },
    { "4826",   "guan",   sizeof(PY_mb_guan),
      PY_mb_guan },
    { "4264",   "hang",   sizeof(PY_mb_hang),
      PY_mb_hang },
    { "4364",   "heng",   sizeof(PY_mb_heng),
      PY_mb_heng },
    { "4664",   "hong",   sizeof(PY_mb_hong),
      PY_mb_hong },
    { "4824",   "huai",   sizeof(PY_mb_huai),
      PY_mb_huai },
    { "4826",   "huan",   sizeof(PY_mb_huan),
      PY_mb_huan },
    { "5264",   "kang",   sizeof(PY_mb_kang),
      PY_mb_kang },
    { "5264",   "lang",   sizeof(PY_mb_lang),
      PY_mb_lang },
    { "5364",   "leng",   sizeof(PY_mb_leng),
      PY_mb_leng },
    { "5364",   "keng",   sizeof(PY_mb_keng),
      PY_mb_keng },
    { "5426",   "lian",   sizeof(PY_mb_lian),
      PY_mb_lian },
    { "5426",   "liao",   sizeof(PY_mb_liao),
      PY_mb_liao },
    { "5426",   "jian",   sizeof(PY_mb_jian),
      PY_mb_jian },
    { "5426",   "jiao",   sizeof(PY_mb_jiao),
      PY_mb_jiao },
    { "5464",   "jing",   sizeof(PY_mb_jing),
      PY_mb_jing },
    { "5464",   "ling",   sizeof(PY_mb_ling),
      PY_mb_ling },
    { "5466",   "jion",   sizeof(PY_mb_jiong),
      PY_mb_jiong },
    { "5664",   "long",   sizeof(PY_mb_long),
      PY_mb_long },
    { "5664",   "kong",   sizeof(PY_mb_kong),
      PY_mb_kong },
    { "5824",   "kuai",   sizeof(PY_mb_kuai),
      PY_mb_kuai },
    { "5826",   "kuan",   sizeof(PY_mb_kuan),
      PY_mb_kuan },
    { "5826",   "luan",   sizeof(PY_mb_luan),
      PY_mb_luan },
    { "5826",   "juan",   sizeof(PY_mb_juan),
      PY_mb_juan },
    { "6264",   "mang",   sizeof(PY_mb_mang),
      PY_mb_mang },
    { "6264",   "nang",   sizeof(PY_mb_nang),
      PY_mb_nang },
    { "6364",   "meng",   sizeof(PY_mb_meng),
      PY_mb_meng },
    { "6364",   "neng",   sizeof(PY_mb_neng),
      PY_mb_neng },
    { "6426",   "mian",   sizeof(PY_mb_mian),
      PY_mb_mian },
    { "6426",   "miao",   sizeof(PY_mb_miao),
      PY_mb_miao },
    { "6426",   "nian",   sizeof(PY_mb_nian),
      PY_mb_nian },
    { "6426",   "niao",   sizeof(PY_mb_niao),
      PY_mb_niao },
    { "6464",   "ming",   sizeof(PY_mb_ming),
      PY_mb_ming },
    { "6464",   "ning",   sizeof(PY_mb_ning),
      PY_mb_ning },
    { "6664",   "nong",   sizeof(PY_mb_nong),
      PY_mb_nong },
    { "6826",   "nuan",   sizeof(PY_mb_nuan),
      PY_mb_nuan },
    { "7264",   "pang",   sizeof(PY_mb_pang),
      PY_mb_pang },
    { "7364",   "peng",   sizeof(PY_mb_peng),
      PY_mb_peng },
    { "7264",   "rang",   sizeof(PY_mb_rang),
      PY_mb_rang },
    { "7264",   "sang",   sizeof(PY_mb_sang),
      PY_mb_sang },
    { "7364",   "seng",   sizeof(PY_mb_seng),
      PY_mb_seng },
    { "7364",   "reng",   sizeof(PY_mb_reng),
      PY_mb_reng },
    { "7424",   "shai",   sizeof(PY_mb_shai),
      PY_mb_shai },
    { "7426",   "shan",   sizeof(PY_mb_shan),
      PY_mb_shan },
    { "7426",   "shao",   sizeof(PY_mb_shao),
      PY_mb_shao },
    { "7426",   "pian",   sizeof(PY_mb_pian),
      PY_mb_pian },
    { "7426",   "piao",   sizeof(PY_mb_piao),
      PY_mb_piao },
    { "7426",   "qian",   sizeof(PY_mb_qian),
      PY_mb_qian },
    { "7426",   "qiao",   sizeof(PY_mb_qiao),
      PY_mb_qiao },
    { "7436",   "shen",   sizeof(PY_mb_shen),
      PY_mb_shen },
    { "7464",   "ping",   sizeof(PY_mb_ping),
      PY_mb_ping },
    { "7464",   "qing",   sizeof(PY_mb_qing),
      PY_mb_qing },
    { "7466",   "qion",   sizeof(PY_mb_qiong),
      PY_mb_qiong },
    { "7468",   "shou",   sizeof(PY_mb_shou),
      PY_mb_shou },
    { "7482",   "shua",   sizeof(PY_mb_shua),
      PY_mb_shua },
    { "7484",   "shui",   sizeof(PY_mb_shui),
      PY_mb_shui },
    { "7486",   "shun",   sizeof(PY_mb_shun),
      PY_mb_shun },
    { "7486",   "shuo",   sizeof(PY_mb_shuo),
      PY_mb_shuo },
    { "7664",   "rong",   sizeof(PY_mb_rong),
      PY_mb_rong },
    { "7664",   "song",   sizeof(PY_mb_song),
      PY_mb_song },
    { "7826",   "suan",   sizeof(PY_mb_suan),
      PY_mb_suan },
    { "7826",   "quan",   sizeof(PY_mb_quan),
      PY_mb_quan },
    { "7826",   "ruan",   sizeof(PY_mb_ruan),
      PY_mb_ruan },
    { "8264",   "tang",   sizeof(PY_mb_tang),
      PY_mb_tang },
    { "8364",   "teng",   sizeof(PY_mb_teng),
      PY_mb_teng },
    { "8426",   "tian",   sizeof(PY_mb_tian),
      PY_mb_tian },
    { "8426",   "tiao",   sizeof(PY_mb_tiao),
      PY_mb_tiao },
    { "8464",   "ting",   sizeof(PY_mb_ting),
      PY_mb_ting },
    { "8664",   "tong",   sizeof(PY_mb_tong),
      PY_mb_tong },
    { "8826",   "tuan",   sizeof(PY_mb_tuan),
      PY_mb_tuan },
    { "9264",   "wang",   sizeof(PY_mb_wang),
      PY_mb_wang },
    { "9264",   "zang",   sizeof(PY_mb_zang),
      PY_mb_zang },
    { "9264",   "yang",   sizeof(PY_mb_yang),
      PY_mb_yang },
    { "9364",   "weng",   sizeof(PY_mb_weng),
      PY_mb_weng },
    { "9364",   "zeng",   sizeof(PY_mb_zeng),
      PY_mb_zeng },
    { "9424",   "zhai",   sizeof(PY_mb_zhai),
      PY_mb_zhai },
    { "9426",   "zhan",   sizeof(PY_mb_zhan),
      PY_mb_zhan },
    { "9426",   "zhao",   sizeof(PY_mb_zhao),
      PY_mb_zhao },
    { "9426",   "xian",   sizeof(PY_mb_xian),
      PY_mb_xian },
    { "9426",   "xiao",   sizeof(PY_mb_xiao),
      PY_mb_xiao },
    { "9436",   "zhen",   sizeof(PY_mb_zhen),
      PY_mb_zhen },
    { "9464",   "xing",   sizeof(PY_mb_xing),
      PY_mb_xing },
    { "9464",   "ying",   sizeof(PY_mb_ying),
      PY_mb_ying },
    { "9466",   "zhon",   sizeof(PY_mb_zhong),
      PY_mb_zhong },
    { "9468",   "zhou",   sizeof(PY_mb_zhou),
      PY_mb_zhou },
    { "9482",   "zhua",   sizeof(PY_mb_zhua),
      PY_mb_zhua },
    { "9484",   "zhui",   sizeof(PY_mb_zhui),
      PY_mb_zhui },
    { "9486",   "zhun",   sizeof(PY_mb_zhun),
      PY_mb_zhun },
    { "9486",   "zhuo",   sizeof(PY_mb_zhuo),
      PY_mb_zhuo },
    { "9466",   "xion",   sizeof(PY_mb_xiong),
      PY_mb_xiong },
    { "9664",   "yong",   sizeof(PY_mb_yong),
      PY_mb_yong },
    { "9664",   "zong",   sizeof(PY_mb_zong),
      PY_mb_zong },
    { "9826",   "yuan",   sizeof(PY_mb_yuan),
      PY_mb_yuan },
    { "9826",   "xuan",   sizeof(PY_mb_xuan),
      PY_mb_xuan },
    { "9826",   "zuan",   sizeof(PY_mb_zuan),
      PY_mb_zuan },
    { "94264",  "xiang",  sizeof(PY_mb_xiang),
      PY_mb_xiang },
    { "94264",  "zhang",  sizeof(PY_mb_zhang),
      PY_mb_zhang },
    { "94364",  "zheng",  sizeof(PY_mb_zheng),
      PY_mb_zheng },
    { "94664",  "xiong",  sizeof(PY_mb_xiong),
      PY_mb_xiong },
    { "94664",  "zhong",  sizeof(PY_mb_zhong),
      PY_mb_zhong },
    { "94824",  "zhuai",  sizeof(PY_mb_zhuai),
      PY_mb_zhuai },
    { "94826",  "zhuan",  sizeof(PY_mb_zhuan),
      PY_mb_zhuan },
    { "24264",  "chang",  sizeof(PY_mb_chang),
      PY_mb_chang },
    { "24364",  "cheng",  sizeof(PY_mb_cheng),
      PY_mb_cheng },
    { "24664",  "chong",  sizeof(PY_mb_chong),
      PY_mb_chong },
    { "24824",  "chuai",  sizeof(PY_mb_chuai),
      PY_mb_chuai },
    { "24826",  "chuan",  sizeof(PY_mb_chuan),
      PY_mb_chuan },
    { "48264",  "guang",  sizeof(PY_mb_guang),
      PY_mb_guang },
    { "48264",  "huang",  sizeof(PY_mb_huang),
      PY_mb_huang },
    { "54264",  "jiang",  sizeof(PY_mb_jiang),
      PY_mb_jiang },
    { "54264",  "liang",  sizeof(PY_mb_liang),
      PY_mb_liang },
    { "54664",  "jiong",  sizeof(PY_mb_jiong),
      PY_mb_jiong },
    { "58264",  "kuang",  sizeof(PY_mb_kuang),
      PY_mb_kuang },
    { "64264",  "niang",  sizeof(PY_mb_niang),
      PY_mb_niang },
    { "74264",  "qiang",  sizeof(PY_mb_qiang),
      PY_mb_qiang },
    { "74264",  "shang",  sizeof(PY_mb_shang),
      PY_mb_shang },
    { "74364",  "sheng",  sizeof(PY_mb_sheng),
      PY_mb_sheng },
    { "74664",  "qiong",  sizeof(PY_mb_qiong),
      PY_mb_qiong },
    { "74824",  "shuai",  sizeof(PY_mb_shuai),
      PY_mb_shuai },
    { "74826",  "shuan",  sizeof(PY_mb_shuan),
      PY_mb_shuan },
    { "248264", "chuang", sizeof(PY_mb_chuang),
      PY_mb_chuang },
    { "748264", "shuang", sizeof(PY_mb_shuang),
      PY_mb_shuang },
    { "948264", "zhuang", sizeof(PY_mb_zhuang),
      PY_mb_zhuang },
    { "",       "",       sizeof(PY_mb_space),
      PY_mb_space }
};

/************************************
 *     English Ime Index Tabel
 **************************************/
const T9EN_IDX t9EN_index[] =
{
    { "1", ",.?"                          },
    { "2", "abcABC"                       },
    { "3", "defDEF"                       },
    { "4", "ghiGHI"                       },
    { "5", "jklJKL"                       },
    { "6", "mnoMNO"                       },
    { "7", "pqrsPQRS"                     },
    { "8", "tuvTUV"                       },
    { "9", "wxyzWXYZ"                     },
    { "*", ",.?!()-_~|:;@&*#+-=''/<>`'$^" }
};

/**********************
*  STATIC VARIABLES
**********************/
static UINT8         ucPYCnt                         = 0;
static INT8          *cPY                            = NULL;
static INT8          cCnt                            = 0;
static lv_obj_t      *py_label[FP_IME_CHAR_SHOW_NUM] = { 0 };
static lv_obj_t      *mb_label[FP_IME_CHAR_SHOW_NUM] = { 0 };
static lv_obj_t      *sym_label[FP_IME_SYM_NUM]      = { 0 };
static lv_obj_t      *LabelParent                    = NULL;
static UINT16        LabelPosY                       = 0;
static UINT16        TaOriHeight                     = 0;

static Ime_Ext_t     *Ime_Ext     = NULL;
static UINT8         ActPyCnt     = 0;
static UINT8         ActMbCnt     = 0;
static UINT8         ShownMbIndex = 0;

static INT8          *MbTxt         = NULL;
static PY_MATCH_LIST *pmatchlist_py = NULL;
static PY_MATCH_LIST *pmatchlist_mb = NULL;
static BOOL          Ime_Init_Flag  = FALSE;
/**********************
*  STATIC PROTOTYPES
**********************/
static VOID Ime_Make_InputPy(INT8 *InputC, BOOL Add);
static BOOL Ime_Set_PyChar(VOID);
static VOID Ime_Set_MbChar(VOID);
static VOID Ime_Set_EngChar(VOID);
static VOID Ime_Make_MbChar(UINT16 PyIndex);
static VOID Ime_Del_AllChar(VOID);
static VOID Ime_Del_PyChar(VOID);
static VOID Ime_Del_MbChar(VOID);
static UINT16 Ime_Str_Match(INT8 *str1, INT8 *str2);
static UINT16 Ime_Get_Matched_Pymb(INT8 *strin, PY_MATCH_LIST *pmatchlist, UINT8 matchPY);
static UINT16 Ime_Get_EngMatch(INT8 *strin, INT8 *MatchLetter);
static lv_res_t Ime_Key_Handle(UI_KEY_VALUE KeyValue);
static UINT16 Ime_Cal_PosY(UINT8 type);
static VOID Ime_Set_Ta_Height(UINT8 type);

#define UI_SUB_MODULE_IME  UI_SUB_MODULE_COMMON_UI

/**********************
*   GLOBAL FUNCTIONS
**********************/


/**
 * Init Ime
 * param (in) VOID
 * return  VOID
 */
VOID Ime_Init(VOID)
{
    UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s\n",__FUNCTION__);
    Ime_Ext = (Ime_Ext_t *)Hal_Mem_Alloc(sizeof(Ime_Ext_t));
    //lv_mem_assert(Ime_Ext);

    memset(Ime_Ext, 0, sizeof(Ime_Ext_t));

    lv_obj_t * Win = UI_Normal_Get_Current_Win();
    Ime_Ext->SymbolLabel = lv_label_create(Win, NULL);
    lv_label_set_long_mode(Ime_Ext->SymbolLabel, LV_LABEL_LONG_SROLL_CIRC);
    lv_obj_set_width(Ime_Ext->SymbolLabel, FP_HOR_RES * 2 / 3);
    lv_coord_t Height = lv_obj_get_height(Ime_Ext->SymbolLabel);
    lv_obj_set_pos(Ime_Ext->SymbolLabel, 2, (FP_TITLE_BAR_H - Height) / 2);

    Ime_Ext->Ta         = NULL;
    Ime_Ext->Show       = TRUE;
    Ime_Ext->SingleMode = FALSE;
    if (UI_LANG_CH == lv_lang_act())/*ch*/
    {
        Ime_Ext->Mode = LV_IME_MODE_PINYIN;
        lv_label_set_text(Ime_Ext->SymbolLabel, LV_SYMBOL_EDIT "pinyin");
    }
    else
    {
        Ime_Ext->Mode = LV_IME_MODE_ENGLISH;
        lv_label_set_text(Ime_Ext->SymbolLabel, LV_SYMBOL_EDIT "Abc");
    }
    pmatchlist_py = (PY_MATCH_LIST *)Hal_Mem_Alloc(sizeof(PY_MATCH_LIST));
    pmatchlist_mb = (PY_MATCH_LIST *)Hal_Mem_Alloc(sizeof(PY_MATCH_LIST));
    LabelParent   = UI_Normal_Get_Current_Win();
    Ime_Init_Flag = TRUE;
}


/**
 * Is Ime active
 * param (in) VOID
 * return  BOOL
 */
BOOL Ime_Is_Active(VOID)
{
    if (Ime_Ext)
    {
        return(Ime_Ext->Active);
    }
    else
    {
        return(FALSE);
    }
}


/**
 * Destroy Ime
 * param (in) VOID
 * return  VOID
 */
VOID Ime_Destroy(VOID)
{
    if (!Ime_Init_Flag)
    {
        return;
    }

    Ime_Del_AllChar();
    if (Ime_Ext)
    {
        if (Ime_Ext->SymbolLabel)
        {
            lv_obj_del(Ime_Ext->SymbolLabel);
        }
        Hal_Mem_Free(Ime_Ext);
        Ime_Ext = NULL;
    }
    if (pmatchlist_py)
    {
        Hal_Mem_Free(pmatchlist_py);
        pmatchlist_py = NULL;
    }

    if (pmatchlist_mb)
    {
        Hal_Mem_Free(pmatchlist_mb);
        pmatchlist_mb = NULL;
    }
    Ime_Init_Flag = FALSE;
    LabelParent   = NULL;
    LabelPosY     = 0;
    UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s,\n",__FUNCTION__);
}


/**
 * Set Label Parent
 * param (in)Par pointer of parent obj
 * return  VOID
 */
VOID Ime_Set_Parent(lv_obj_t *Par)
{
    lv_coord_t ver;
    _lv_style_get_int(&lv_style_plain, LV_STYLE_PAD_TOP, &ver);

    LabelParent = Par;
    LabelPosY   = lv_font_get_line_height(LV_THEME_SIMPLE_FONT_NORMAL) - 5;
}


/**
 * Set Get InputChar lenth Func
 * param (in)InPutChar lenth
 * return  VOID
 */
VOID Ime_Set_GetCharLen_Func(Ime_InputChar_Len Func)
{
    Ime_Ext->Func = Func;
}


/**
 * Set Ime Mode
 * param (in) IME_MODE
 * return  VOID
 */
VOID Ime_Set_Mode(IME_MODE Mode)
{
    if (Ime_Ext->SingleMode || Ime_Ext->Mode == Mode)
    {
        return;
    }

    Ime_Ext->Mode = Mode;
    switch (Mode)
    {
    case LV_IME_MODE_PINYIN:
        lv_label_set_text(Ime_Ext->SymbolLabel, LV_SYMBOL_EDIT "pinyin");
        break;

    /* case LV_IME_MODE_STROKE:
     * lv_label_set_text(Ime_Ext->SymbolLabel, SYMBOL_EDIT"一丿丶乛");
     * break;*/
    case LV_IME_MODE_ENGLISH:
        lv_label_set_text(Ime_Ext->SymbolLabel, LV_SYMBOL_EDIT "Abc");
        break;

    /* case LV_IME_MODE_CAPITAL:
     * lv_label_set_text(Ime_Ext->SymbolLabel, SYMBOL_EDIT"ABC");
     * break;
     * case LV_IME_MODE_LOWER:
     * lv_label_set_text(Ime_Ext->SymbolLabel, SYMBOL_EDIT"abc");
     * break;*/
    case LV_IME_MODE_NUM:
        lv_label_set_text(Ime_Ext->SymbolLabel, LV_SYMBOL_EDIT "123");
        break;

    default:
        break;
    }
}


/**
 * Set Ime SingelMode
 * param (in) TRUE can't set other mode by Ime_Set_Mode
 * return  VOID
 */
VOID Ime_Set_SingleMode(BOOL Single)
{
    Ime_Ext->SingleMode = Single;
}


/**
 * Set Ime Ta
 * param (in) ta pointer to a Text Area object to write there
 * return  VOID
 */
VOID Ime_Set_Ta(lv_obj_t *ta)
{
    Ime_Ext->Ta = ta;
    TaOriHeight = lv_obj_get_height(Ime_Ext->Ta);
}


/**
 * Set Ime Mode Symbol Show/Hide
 * param (in) Show
 * return  VOID
 */
VOID Ime_Set_Show(BOOL Show)
{
    if (Ime_Ext->Show == Show)
    {
        return;
    }
    Ime_Ext->Show = Show;
    if (Show)
    {
        lv_obj_set_hidden(Ime_Ext->SymbolLabel,FALSE);
    }
    else
    {
        lv_obj_set_hidden(Ime_Ext->SymbolLabel,TRUE);
    }
}


/**
 * Set Ime Mode Symbol Pos
 * param (in) x,y
 * return  VOID
 */
VOID Ime_Set_SymbolLabel_Pos(UINT16 x, UINT16 y)
{
    lv_obj_set_pos(Ime_Ext->SymbolLabel, x, y);
}


/**
 * Get Ime Mode
 * param (in) VOID
 * return IME_MODE
 */
IME_MODE Ime_Get_Mode(VOID)
{
    return(Ime_Ext->Mode);
}


/**
 * Get Ime Ta
 * param (in) VOID
 * return Pointer of Ta
 */
lv_obj_t *Ime_Get_Ta(VOID)
{
    return(Ime_Ext->Ta);
}


/**
 * Get Ime Mode SYMBOL Show
 * param (in) VOID
 * return FALSE/TRUE
 */
BOOL Ime_Get_Show(VOID)
{
    return(Ime_Ext->Show);
}


/**
 * Ime Key Process
 * param (in) UI_KEY_VALUE
 * return lv_res_t LV_RES_OK--key will return to the window to process
 *                 LV_RES_INV -- key will stop process
 */
lv_res_t Ime_Signal(UI_KEY_VALUE Key)
{
    if (Ime_Ext == NULL || Ime_Ext->Ta == NULL)
    {
        return(LV_RES_OK);
    }

    IME_MODE Mode = Ime_Get_Mode();
    switch (Key)
    {
    case KEY_HASH:/*Hash Key Switch Ime Mode*/
    {
        if (Ime_Ext->SingleMode)
        {
            return(LV_RES_OK);
        }

        if (Mode == LV_IME_MODE_NUM)
        {
            Mode = LV_IME_MODE_PINYIN;
        }
        else
        {
            if (Mode == LV_IME_MODE_PINYIN || Mode == LV_IME_MODE_ENGLISH)
            {
                Ime_Del_AllChar();
            }
            Mode = (IME_MODE)((UINT8)Mode + 1);
        }
        Ime_Set_Mode(Mode);
        break;
    }

    case KEY_0:/*0 Key add a blank in ta*/
    {
        if (Ime_Ext->Active == FALSE)
        {
            if (Mode != LV_IME_MODE_NUM)
            {
                lv_textarea_ext_t *ext = lv_obj_get_ext_attr(Ime_Ext->Ta);
                if (  ext->max_length > 0
                      && strlen(lv_textarea_get_text(Ime_Ext->Ta)) + 1 > ext->max_length)
                {
                    UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_ERROR, "Have reached the max length of ta!\n");
                    break;
                }
                lv_textarea_add_text(Ime_Ext->Ta, " ");
                if (Ime_Ext->Func)
                {
                    Ime_Ext->Func(1);
                }
            }
            else
            {
                return(LV_RES_OK);
            }
        }
        break;
    }

    case KEY_ASTERISK:
    {
        if (Mode != LV_IME_MODE_NUM)
        {
            /*Asterisk key open symbol window*/
            if ((sym_label[0] == NULL) && (mb_label[0] == NULL))
            {
                Ime_Set_Ta_Height(2);
                _lv_txt_encoded_next((const INT8 *)&Key, NULL);
                Ime_Make_InputPy((INT8 *)&Key,FALSE);
                Ime_Set_EngChar();
            }
        }
        else
        {
            return(LV_RES_OK);
        }

        break;
    }

    case KEY_1:
    {
         return(LV_RES_OK);
    }

    case KEY_2:
    case KEY_3:
    case KEY_4:
    case KEY_5:
    case KEY_6:
    case KEY_7:
    case KEY_8:
    case KEY_9:
    {
        _lv_txt_encoded_next((const INT8 *)&Key, NULL);
        if (Mode == LV_IME_MODE_PINYIN)
        {
            Ime_Set_Ta_Height(2);
            Ime_Make_InputPy((INT8 *)&Key,TRUE);
            if(Ime_Set_PyChar())
            {
                Ime_Make_MbChar(0);
                Ime_Set_MbChar();
            }

            break;
        }
        else if (Mode == LV_IME_MODE_ENGLISH)
        {
            Ime_Set_Ta_Height(1);
            Ime_Make_InputPy((INT8 *)&Key,FALSE);
            Ime_Set_EngChar();
            break;
        }
        else
        {
            return(LV_RES_OK);
        }
    }

    default:
        return(Ime_Key_Handle(Key));
    } /* switch */

    return(LV_RES_INV);
} /* Ime_Signal */

/**********************
*   STATIC FUNCTIONS
**********************/


static UINT16 Ime_Str_Match(INT8 *str1, INT8 *str2)
{
    UINT16 i = 0;

    while (1)
    {
        if (*str1 != *str2)
        {
            break;        // Partial match
        }
        if (*str1 == '\0')
        {                // total match
            i = 0XFFFF;
            break;
        }

        i++;
        str1++;
        str2++;
    }

    return(i);
}


static UINT16 Ime_Get_Matched_Pymb(INT8 *strin, PY_MATCH_LIST *pmatchlist, UINT8 matchPY)
{
    T9PY_IDX *bestmatch;
    UINT16   usSize = 0;
    UINT16   PYIndex_Len;
    UINT16   temp;
    UINT16   i;
    UINT16   k     = 0;
    UINT16   mcnt  = 0;
    UINT16   bmcnt = 0;

    bestmatch   = (T9PY_IDX *)&t9PY_index[0]; // default match "a"
    PYIndex_Len = 486;                        // size of py Index Table

    for (i = 0; i < PYIndex_Len; i++)
    {
        if (matchPY)
        {
            temp = Ime_Str_Match(strin,(INT8 *)(t9PY_index[i].PY));
        }
        else
        {
            temp = Ime_Str_Match(strin,(INT8 *)(t9PY_index[i].T9));
        }

        if (temp)
        {
            if (temp == 0XFFFF)
            {
                pmatchlist->ausSize[k]  = t9PY_index[i].usSize;
                pmatchlist->pmatchpy[k] = (T9PY_IDX *)&t9PY_index[i];
                mcnt++;
                k++;
            }
            else if (temp > bmcnt)// find best match
            {
                bmcnt     = temp;
                usSize    = t9PY_index[i].usSize;
                bestmatch = (T9PY_IDX *)&t9PY_index[i];
            }
        }
    }
    if (mcnt == 0)// no total match result but Partial match
    {
        pmatchlist->pmatchpy[0] = bestmatch;
        pmatchlist->ausSize[0]  = usSize;
        //  mcnt                    = 1;
    }
    UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s, mcnt = %d\n",__FUNCTION__,mcnt);
    return(mcnt);
} /* Ime_Get_Matched_Pymb */


static UINT16 Ime_Get_EngMatch(INT8 *strin, INT8 *MatchLetter)
{
    UINT16 EnIndex_Len;
    UINT16 temp;
    UINT16 i;
    UINT8  mcnt;

    EnIndex_Len = 10;
    for (i = 0; i < EnIndex_Len; i++)
    {
        temp = Ime_Str_Match(strin,(INT8 *)(t9EN_index[i].key));
        if (temp)
        {
            memcpy(MatchLetter,t9EN_index[i].Letter,strlen(t9EN_index[i].Letter));
            mcnt = strlen(t9EN_index[i].Letter);
            break;
        }
        else
        {
            memcpy(MatchLetter,t9EN_index[0].Letter,strlen(t9EN_index[0].Letter));
            mcnt = 6;
        }
    }

    return(mcnt);
}


static VOID Ime_Del_PyChar(VOID)
{
    UINT8 i = 0;

    while (py_label[i] && i < ActPyCnt)
    {
        lv_obj_del(py_label[i]);
        py_label[i] = NULL;
        i++;
    }
    if (cPY)
    {
        Hal_Mem_Free(cPY);
        cPY = NULL;
    }
    ucPYCnt                = 0;
    ActPyCnt               = 0;
    Ime_Ext->ChosenPyIndex = 0;
    Ime_Set_Ta_Height(1);
    UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s\n", __FUNCTION__);
}


static VOID Ime_Del_MbChar(VOID)
{
    UINT8 i = 0;

    while (mb_label[i] && i < ActMbCnt)
    {
        lv_obj_del(mb_label[i]);
        mb_label[i] = NULL;
        i++;
    }

    ActMbCnt               = 0;
    Ime_Ext->ChosenMbIndex = 0;
    Ime_Set_Ta_Height(0);
    UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s\n", __FUNCTION__);
}


static VOID  Ime_Del_SymChar(VOID)
{
    UINT8 i = 0;

    while (sym_label[i] && i < FP_IME_SYM_NUM)
    {
        lv_obj_del(sym_label[i]);
        sym_label[i] = NULL;
        i++;
    }

    if (cPY)
    {
        Hal_Mem_Free(cPY);
        cPY = NULL;
    }
    ucPYCnt                = 0;
    Ime_Ext->ChosenMbIndex = 0;
    Ime_Ext->Active        = FALSE;
    Ime_Ext->Chosen        = 0;
    Ime_Set_Ta_Height(0);
    UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s\n", __FUNCTION__);
}


static VOID Ime_Del_AllChar(VOID)
{
    Ime_Del_PyChar();
    Ime_Del_MbChar();
    Ime_Del_SymChar();
    Ime_Ext->Chosen = 0;
    Ime_Ext->Active = FALSE;
    ShownMbIndex    = 0;
    if (MbTxt)
    {
        Hal_Mem_Free(MbTxt);
        MbTxt = NULL;
    }
}

static VOID Ime_Adjust_PyChar_Pos_Right_Key(VOID)
{
    lv_area_t obj_coords;
    obj_coords.x1 = lv_obj_get_x(py_label[Ime_Ext->ChosenPyIndex]);
    obj_coords.x2 = obj_coords.x1 + lv_obj_get_width(py_label[Ime_Ext->ChosenPyIndex]);

    if ((FP_HOR_RES <= obj_coords.x1) || (FP_HOR_RES < obj_coords.x2))
    {
        UINT8 i = 0;
        UINT8 mcnt_py = Ime_Get_Matched_Pymb(cPY,pmatchlist_py,0);
        UINT8 PyLen = strlen(pmatchlist_py->pmatchpy[i]->PY);
        for (i = 0; i < Ime_Ext->ChosenPyIndex; i++)
        {
            lv_obj_set_hidden(py_label[i], TRUE);
        }
        for (i = Ime_Ext->ChosenPyIndex; i < mcnt_py; i++)
        {
            lv_obj_set_x(py_label[i],(FP_HOR_RES / (9 - PyLen)) * (i - Ime_Ext->ChosenPyIndex));
        }
    }
}

static VOID Ime_Adjust_PyChar_Pos_Left_Key(VOID)
{
    lv_area_t obj_coords;
    obj_coords.x1 = lv_obj_get_x(py_label[Ime_Ext->ChosenPyIndex]);

    if ((0 == obj_coords.x1) && (0 < Ime_Ext->ChosenPyIndex))
    {
        UINT8 i = 0;
        UINT8 mcnt_py = Ime_Get_Matched_Pymb(cPY,pmatchlist_py,0);
        UINT8 PyLen = strlen(pmatchlist_py->pmatchpy[i]->PY);
        for (i = Ime_Ext->ChosenPyIndex; i < mcnt_py; i++)
        {
            lv_obj_set_x(py_label[i],(FP_HOR_RES / (9 - PyLen)) * i);
        }
        for (i = 0; i < Ime_Ext->ChosenPyIndex; i++)
        {
            lv_obj_set_hidden(py_label[i], FALSE);
        }
    }
}

static lv_res_t Ime_Key_Handle(UI_KEY_VALUE KeyValue)
{
    lv_res_t Res = LV_RES_INV;

    switch (KeyValue)
    {
    case KEY_DOWN:
    {
        if (Ime_Ext->Active == FALSE)
        {
            Res = LV_RES_OK;
            break;
        }

        if (Ime_Ext->Chosen == 0)
        {
            Ime_Ext->Chosen = 1;
            lv_obj_add_style(py_label[Ime_Ext->ChosenPyIndex], LV_OBJ_PART_MAIN, &label_hint);
            lv_obj_add_style(mb_label[0], LV_OBJ_PART_MAIN, &label_prim);
        }
        else if (Ime_Ext->Chosen == 1)
        {
            INT8   p[4] = { 0,0,0,0 };
            UINT8  i    = 0;
            UINT8  j    = 0;
            UINT8  Temp = ShownMbIndex;
            UINT16 posy = Ime_Cal_PosY(1);
            if (NULL != MbTxt && cCnt > ShownMbIndex)
            {
                Ime_Del_MbChar();
                if(py_label[0])
                {
                    Ime_Set_Ta_Height(2);
                }
                else
                {
                    Ime_Set_Ta_Height(1);
                }
                for (i = 0; MbTxt[Temp * 3 + i] != '\0' && j < FP_IME_CHAR_SHOW_NUM; j++)
                {
                    mb_label[j] = lv_label_create(LabelParent, NULL);
                    lv_obj_set_pos(mb_label[j],(FP_HOR_RES / 10) * j, posy);
                    lv_obj_add_style(mb_label[j], LV_OBJ_PART_MAIN, &label_hint);
                    memcpy(p,&(MbTxt[Temp * 3 + i]),3);
                    p[3] = '\0';
                    lv_label_set_text(mb_label[j],p);
                    i += 3;
                    ShownMbIndex++;
                }
                lv_obj_add_style(mb_label[0], LV_OBJ_PART_MAIN, &label_prim);
                ActMbCnt = j;
                UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s, ShownMbIndex = %d,ActMbCnt=%d\n",__FUNCTION__,ShownMbIndex,ActMbCnt);
            }
        }
        else if (Ime_Ext->Chosen == 2)
        {
            UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s, ShownMbIndex = %d\n",__FUNCTION__, Ime_Ext->ChosenMbIndex);
            UINT8 line = Ime_Ext->ChosenMbIndex / FP_IME_SYM_ELINE_NUM;
            UINT8 Temp = Ime_Ext->ChosenMbIndex;
            if (line < 2)
            {
                lv_obj_add_style(sym_label[Ime_Ext->ChosenMbIndex], LV_OBJ_PART_MAIN, &label_hint);
                Ime_Ext->ChosenMbIndex = Temp + FP_IME_SYM_ELINE_NUM >
                                         FP_IME_SYM_NUM - 1 ? FP_IME_SYM_NUM - 1 : Temp +
                                         FP_IME_SYM_ELINE_NUM;
                lv_obj_add_style(sym_label[Ime_Ext->ChosenMbIndex], LV_OBJ_PART_MAIN, &label_prim);
            }
        }

        break;
    }

    case KEY_UP:
    {
        if (Ime_Ext->Active == FALSE)
        {
            Res = LV_RES_OK;
            break;
        }
        if(Ime_Ext->Chosen == 1)
        {
            if (ShownMbIndex > FP_IME_CHAR_SHOW_NUM)
            {
                INT8   p[4] = { 0,0,0,0 };
                UINT8  i    = 0;
                UINT8  j    = 0;
                UINT8  TempAct = ActMbCnt;
                UINT8  TempChosen = Ime_Ext->ChosenMbIndex;
                UINT16 posy = Ime_Cal_PosY(1);
                Ime_Del_MbChar();
                if (py_label[0])
                {
                    Ime_Set_Ta_Height(2);
                }
                else
                {
                    Ime_Set_Ta_Height(1);
                }
                for (i = 0; j < FP_IME_CHAR_SHOW_NUM; j++)
                {
                    mb_label[j] = lv_label_create(LabelParent, NULL);
                    lv_obj_set_pos(mb_label[j],(FP_HOR_RES / 10) * j, posy);
                    lv_obj_add_style(mb_label[j], LV_OBJ_PART_MAIN, &label_hint);
                    memcpy(p,&(MbTxt[(ShownMbIndex - TempAct - FP_IME_CHAR_SHOW_NUM) * 3 + i]),3);
                    p[3] = '\0';
                    lv_label_set_text(mb_label[j],p);
                    i += 3;
                }
                ShownMbIndex = ShownMbIndex - TempAct;
                ActMbCnt = j;
                UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%safter, ShownMbIndex = %d,ActMbCnt=%d TempChosen = %d\n",__FUNCTION__,ShownMbIndex,ActMbCnt,TempChosen);
                lv_obj_add_style(mb_label[TempChosen], LV_OBJ_PART_MAIN, &label_prim);
                Ime_Ext->ChosenMbIndex = TempChosen;
            }
            else
            {
                if (Ime_Ext->ChosenMbIndex != 0)
                {
                    lv_obj_add_style(mb_label[Ime_Ext->ChosenMbIndex], LV_OBJ_PART_MAIN, &label_hint);
                    lv_obj_add_style(mb_label[0], LV_OBJ_PART_MAIN, &label_prim);
                    Ime_Ext->ChosenMbIndex = 0;
                }
                else
                {
                    if (py_label[Ime_Ext->ChosenPyIndex])
                    {
                        Ime_Ext->Chosen = 0;
                        lv_obj_add_style(py_label[Ime_Ext->ChosenPyIndex], LV_OBJ_PART_MAIN, &label_prim);
                        lv_obj_add_style(mb_label[0], LV_OBJ_PART_MAIN, &label_hint);
                    }
                }
            }
        }
        else if (Ime_Ext->Chosen == 2)
        {
            UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s, ShownMbIndex = %d\n",__FUNCTION__,Ime_Ext->ChosenMbIndex);

            UINT8 Temp = Ime_Ext->ChosenMbIndex;

            lv_obj_add_style(sym_label[Ime_Ext->ChosenMbIndex], LV_OBJ_PART_MAIN, &label_hint);
            Ime_Ext->ChosenMbIndex = Temp - FP_IME_SYM_ELINE_NUM >
                                     0 ? Temp - FP_IME_SYM_ELINE_NUM : 0;
            lv_obj_add_style(sym_label[Ime_Ext->ChosenMbIndex], LV_OBJ_PART_MAIN, &label_prim);
        }

        break;
    }

    case KEY_OK:
    case KEY_SOFTLEFT:
    {
        if (Ime_Ext->Active == FALSE)
        {
            Res = LV_RES_OK;
            break;
        }
        if (Ime_Ext->Chosen == 0)
        {
            Ime_Ext->Chosen = 1;

            lv_obj_add_style(py_label[Ime_Ext->ChosenPyIndex], LV_OBJ_PART_MAIN, &label_hint);
            lv_obj_add_style(mb_label[0], LV_OBJ_PART_MAIN, &label_prim);
        }
        else if (Ime_Ext->Chosen == 1)
        {
            lv_textarea_ext_t *ext = lv_obj_get_ext_attr(Ime_Ext->Ta);
            if (  ext->max_length > 0
               && strlen(lv_textarea_get_text(Ime_Ext->Ta)) +
                  strlen(lv_label_get_text(mb_label[Ime_Ext->ChosenMbIndex])) > ext->max_length)
            {
                UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_ERROR, "Have reached the max length of ta!\n");
                break;
            }
            lv_textarea_add_text(Ime_Ext->Ta,lv_label_get_text(mb_label[Ime_Ext->ChosenMbIndex]));
            if (Ime_Ext->Func)
            {
                Ime_Ext->Func(strlen(lv_label_get_text(mb_label[Ime_Ext->ChosenMbIndex])));
            }

            if (Ime_Ext->Mode == LV_IME_MODE_PINYIN)
            {
                Ime_Del_PyChar();
            }
        }
        else if (Ime_Ext->Chosen == 2)
        {
            lv_textarea_ext_t *ext = lv_obj_get_ext_attr(Ime_Ext->Ta);
            if (ext->max_length > 0 && strlen(lv_textarea_get_text(Ime_Ext->Ta)) + 1 > ext->max_length)
            {
                UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_ERROR, "Have reached the max length of ta!\n");
                break;
            }
            lv_textarea_add_text(Ime_Ext->Ta,lv_label_get_text(sym_label[Ime_Ext->ChosenMbIndex]));
            if (Ime_Ext->Func)
            {
                Ime_Ext->Func(1);
            }
            Ime_Del_SymChar();
        }

        break;
    }

    case KEY_LEFT:
    {
        if (Ime_Ext->Active == FALSE)
        {
            Res = LV_RES_OK;
            break;
        }
        if (Ime_Ext->Chosen == 0)
        {
            if (Ime_Ext->ChosenPyIndex > 0)
            {
                lv_obj_add_style(py_label[Ime_Ext->ChosenPyIndex], LV_OBJ_PART_MAIN, &label_hint);
                Ime_Adjust_PyChar_Pos_Left_Key();
                Ime_Ext->ChosenPyIndex--;
                lv_obj_add_style(py_label[Ime_Ext->ChosenPyIndex], LV_OBJ_PART_MAIN, &label_prim);
                Ime_Make_MbChar(Ime_Ext->ChosenPyIndex);
                Ime_Set_MbChar();
            }
        }
        else if (Ime_Ext->Chosen == 1)
        {
            if (Ime_Ext->ChosenMbIndex > 0)
            {
                lv_obj_add_style(mb_label[Ime_Ext->ChosenMbIndex], LV_OBJ_PART_MAIN, &label_hint);
                Ime_Ext->ChosenMbIndex--;
                lv_obj_add_style(mb_label[Ime_Ext->ChosenMbIndex], LV_OBJ_PART_MAIN, &label_prim);
            }
        }
        else if (Ime_Ext->Chosen == 2)
        {
            if (Ime_Ext->ChosenMbIndex > 0)
            {
                lv_obj_add_style(sym_label[Ime_Ext->ChosenMbIndex], LV_OBJ_PART_MAIN, &label_hint);
                Ime_Ext->ChosenMbIndex--;
                lv_obj_add_style(sym_label[Ime_Ext->ChosenMbIndex], LV_OBJ_PART_MAIN, &label_prim);
            }
        }

        break;
    }

    case KEY_RIGHT:
    {
        if (Ime_Ext->Active == FALSE)
        {
            Res = LV_RES_OK;
            break;
        }
        if (Ime_Ext->Chosen == 0)
        {
            if (Ime_Ext->ChosenPyIndex < ActPyCnt - 1)
            {
                lv_obj_add_style(py_label[Ime_Ext->ChosenPyIndex], LV_OBJ_PART_MAIN, &label_hint);
                Ime_Ext->ChosenPyIndex++;
                lv_obj_add_style(py_label[Ime_Ext->ChosenPyIndex], LV_OBJ_PART_MAIN, &label_prim);
                Ime_Adjust_PyChar_Pos_Right_Key();
                Ime_Make_MbChar(Ime_Ext->ChosenPyIndex);
                Ime_Set_MbChar();
            }
        }
        else if (Ime_Ext->Chosen == 1)
        {
            if (Ime_Ext->ChosenMbIndex < ActMbCnt - 1)
            {
                lv_obj_add_style(mb_label[Ime_Ext->ChosenMbIndex], LV_OBJ_PART_MAIN, &label_hint);
                Ime_Ext->ChosenMbIndex++;
                lv_obj_add_style(mb_label[Ime_Ext->ChosenMbIndex], LV_OBJ_PART_MAIN, &label_prim);
            }
        }
        else if (Ime_Ext->Chosen == 2)
        {
            if (Ime_Ext->ChosenMbIndex < FP_IME_SYM_NUM - 1)
            {
                lv_obj_add_style(sym_label[Ime_Ext->ChosenMbIndex], LV_OBJ_PART_MAIN, &label_hint);
                Ime_Ext->ChosenMbIndex++;
                lv_obj_add_style(sym_label[Ime_Ext->ChosenMbIndex], LV_OBJ_PART_MAIN, &label_prim);
            }
        }
        break;
    }

    case KEY_SOFTRIGHT:
    {
        if (Ime_Ext->Active == FALSE)
        {
            Res = LV_RES_OK;
            break;
        }
        if (Ime_Ext->Chosen == 0)
        {
            if (ucPYCnt > 1)
            {
                Ime_Make_InputPy(NULL, FALSE);
                if(Ime_Set_PyChar())
                {
                    Ime_Make_MbChar(0);
                    Ime_Set_MbChar();
                }

            }
            else
            {
                Ime_Del_AllChar();
            }
        }
        else if (Ime_Ext->Chosen == 1)
        {
            if (cPY == NULL || Ime_Ext->Mode == LV_IME_MODE_ENGLISH)
            {
                Ime_Del_AllChar();
            }
            else
            {
                Ime_Ext->Chosen = 0;
                lv_obj_add_style(py_label[Ime_Ext->ChosenPyIndex], LV_OBJ_PART_MAIN, &label_prim);
                lv_obj_add_style(mb_label[Ime_Ext->ChosenMbIndex], LV_OBJ_PART_MAIN, &label_hint);
            }
        }
        else if (Ime_Ext->Chosen == 2)
        {
            Ime_Del_SymChar();
        }

        break;
    }

    default:
        Res = LV_RES_OK;
        break;
    } /* switch */

    return(Res);
} /* Ime_Key_Handle */


static VOID Ime_Make_InputPy(INT8 *InputC, BOOL Add)
{
    INT8 *cPYTemp = NULL;

    if (NULL != InputC)
    {
        if (Add)
        {
            cPYTemp = cPY;
            ucPYCnt++;
            cPY = (INT8 *)Hal_Mem_Alloc(ucPYCnt + 1);
            if (NULL != cPYTemp)
            {
                memcpy(cPY,cPYTemp,ucPYCnt - 1);
                Hal_Mem_Free(cPYTemp);
            }

            cPY[ucPYCnt - 1] = *InputC;
            cPY[ucPYCnt]     = '\0';
        }
        else
        {
            if (cPY)
            {
                Hal_Mem_Free(cPY);
            }
            ucPYCnt = 1;
            cPY     = (INT8 *)Hal_Mem_Alloc(ucPYCnt + 1);
            memcpy(cPY,InputC,1);
        }
    }
    else
    {
        cPY[ucPYCnt - 1] = '\0';
        ucPYCnt--;
    }

    UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s, cPY=%s,ucPYCnt = %d\n",__FUNCTION__, cPY,ucPYCnt);
}


static VOID Ime_Make_MbChar(UINT16 PyIndex)
{
    UINT16 mcnt_mb    = 0;
    UINT16 i          = 0;
    UINT16 usInputLen = 0;
    INT8   *cPYTemp   = NULL;

    mcnt_mb =
        Ime_Get_Matched_Pymb((INT8 *)(pmatchlist_py->pmatchpy[PyIndex]->PY), pmatchlist_mb, 1);

    for (i = 0; i < mcnt_mb; i++)
    {
        usInputLen += pmatchlist_mb->ausSize[i];
    }
    if (MbTxt)
    {
        Hal_Mem_Free(MbTxt);
        MbTxt = NULL;
    }

    MbTxt = (INT8 *)Hal_Mem_Alloc(usInputLen + 1);

    cPYTemp = MbTxt;
    for (i = 0; i < mcnt_mb; i++)
    {
        memcpy(cPYTemp,pmatchlist_mb->pmatchpy[i]->MB,pmatchlist_mb->ausSize[i]);
        cPYTemp += pmatchlist_mb->ausSize[i];
    }
    MbTxt[usInputLen]      = '\0';
    Ime_Ext->ChosenMbIndex = 0;
    UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s, MbTxt=%s\n",__FUNCTION__,MbTxt);
}


static BOOL Ime_Set_PyChar(VOID)
{
    UINT16 mcnt_py = 0;
    UINT16 i       = 0;
    UINT8  PyLen   = 0;

    UINT16 posy = Ime_Cal_PosY(0);

    mcnt_py = Ime_Get_Matched_Pymb(cPY,pmatchlist_py,0);
    UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s, mcnt_py=%d \n",__FUNCTION__,mcnt_py);
    if(mcnt_py == 0)
    {
         Ime_Make_InputPy(NULL, FALSE);
         return FALSE;
    }


    while (py_label[i])
    {
        lv_obj_del(py_label[i]);
        py_label[i] = NULL;
        i++;
    }

    Ime_Ext->Active        = TRUE;
    Ime_Ext->Chosen        = 0;
    Ime_Ext->ChosenPyIndex = 0;
    for (i = 0; i < mcnt_py; i++)
    {
        py_label[i] = lv_label_create(LabelParent, NULL);
        PyLen       = strlen(pmatchlist_py->pmatchpy[i]->PY);
        lv_obj_set_pos(py_label[i],(FP_HOR_RES / (9 - PyLen)) * i,posy);
        UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s, pmatchlist_py->pmatchpy[%d]->PY=%s\n",__FUNCTION__, i, pmatchlist_py->pmatchpy[i]->PY);
        lv_label_set_text(py_label[i],pmatchlist_py->pmatchpy[i]->PY);
        if (i == 0)
        {
            lv_obj_add_style(py_label[i], LV_OBJ_PART_MAIN, &label_prim);
        }
        else
        {
            lv_obj_add_style(py_label[i], LV_OBJ_PART_MAIN, &label_hint);
        }
        lv_obj_set_style_local_text_letter_space(py_label[i], LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, 0);
    }

    ActPyCnt = i;
    UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s, ActPyCnt = %d\n",__FUNCTION__,ActPyCnt);
    return TRUE;
} /* Ime_Set_PyChar */


static VOID Ime_Set_MbChar(VOID)
{
    UINT8  i        = 0;
    UINT8  j        = 0;
    INT8   p[4]     = { 0,0,0,0 };
    UINT8  LabelCnt = 0;
    UINT16 posy     = Ime_Cal_PosY(1);

    while (mb_label[j] && j < ActMbCnt)
    {
        lv_obj_del(mb_label[j]);
        mb_label[j] = NULL;
        j++;
    }
    j            = 0;
    ShownMbIndex = 0;

    if (NULL != MbTxt)
    {
        cCnt     = strlen(MbTxt) / 3;
        LabelCnt = cCnt > FP_IME_CHAR_SHOW_NUM ? FP_IME_CHAR_SHOW_NUM : cCnt;
        for (i = 0; MbTxt[i] != '\0' && j < LabelCnt; j++)
        {
            if (NULL == mb_label[j])
            {
                mb_label[j] = lv_label_create(LabelParent, NULL);
            }

            lv_obj_set_pos(mb_label[j],(FP_HOR_RES / 10) * j, posy);
            lv_obj_add_style(mb_label[j], LV_OBJ_PART_MAIN, &label_hint);
            memcpy(p,&(MbTxt[i]),3);
            p[3] = '\0';
            lv_label_set_text(mb_label[j],p);
            i += 3;
            ShownMbIndex++;
        }
        ActMbCnt = j;
        UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s,ActMbCnt = %d ShownMbIndex = %d cCnt=%d\n",__FUNCTION__,ActMbCnt,ShownMbIndex,cCnt);
    }
} /* Ime_Set_MbChar */


static VOID Ime_Set_EngChar(VOID)
{
    UINT16 mcnt_en            = 0;
    UINT16 i                  = 0;
    INT8   p[2]               = { 0,0 };
    INT8   EngMatchLetter[32] = { 0 };

    mcnt_en = Ime_Get_EngMatch(cPY, (INT8 *)(&EngMatchLetter));
    UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s, mcnt_en=%d EngMatchLetter=%s,chosen = %d\n",__FUNCTION__,mcnt_en,EngMatchLetter, Ime_Ext->Chosen);

    while (mb_label[i])
    {
        lv_obj_del(mb_label[i]);
        mb_label[i] = NULL;
        i++;
    }

    Ime_Ext->Active        = TRUE;
    Ime_Ext->ChosenMbIndex = 0;
    UINT8 LabelCnt = mcnt_en > FP_IME_CHAR_SHOW_NUM ? FP_IME_CHAR_SHOW_NUM : mcnt_en;
    if (mcnt_en == FP_IME_SYM_NUM)
    {
        Ime_Ext->Chosen = 2;
        for (i = 0; i < mcnt_en; i++)
        {
            sym_label[i] = lv_label_create(LabelParent, NULL);
            lv_obj_set_pos(sym_label[i], 5 + lv_font_get_line_height(LV_THEME_SIMPLE_FONT_NORMAL) * (i % FP_IME_SYM_ELINE_NUM),  Ime_Cal_PosY(2) + (i / FP_IME_SYM_ELINE_NUM) * lv_font_get_line_height(LV_THEME_SIMPLE_FONT_NORMAL));
            if (i == 0)
            {
                lv_obj_add_style(sym_label[i], LV_OBJ_PART_MAIN, &label_prim);
            }
            else
            {
                lv_obj_add_style(sym_label[i], LV_OBJ_PART_MAIN, &label_hint);
            }

            memcpy(p,&(EngMatchLetter[i]),1);
            p[1] = '\0';
            lv_label_set_text(sym_label[i],p);
        }
    }
    else
    {
        if(Ime_Ext->Chosen == 2)
        {
            i = 0;
            while (sym_label[i] && i < FP_IME_SYM_NUM)
            {
                lv_obj_del(sym_label[i]);
                sym_label[i] = NULL;
                i++;
            }
        }
        Ime_Ext->Chosen = 1;
        UINT16 posy = Ime_Cal_PosY(1);

        for (i = 0; i < mcnt_en && i < LabelCnt; i++)
        {
            mb_label[i] = lv_label_create(LabelParent, NULL);
            lv_obj_set_pos(mb_label[i], (FP_HOR_RES / 10) * i, posy);
            if (i == 0)
            {
                lv_obj_add_style(mb_label[i], LV_OBJ_PART_MAIN, &label_prim);
            }
            else
            {
                lv_obj_add_style(mb_label[i], LV_OBJ_PART_MAIN, &label_hint);
            }

            memcpy(p,&(EngMatchLetter[i]),1);
            p[1] = '\0';
            lv_label_set_text(mb_label[i],p);
            if(p[0] == 'j' || p[0] == 'g' || p[0] == 'y' || p[0] == 'p' || p[0] == 'q' || p[0] == 'J')
            {
                lv_obj_set_y(mb_label[i], posy - 3);
            }
        }
    }

    ActMbCnt = i;
    UI_Log_Out(UI_SUB_MODULE_IME, UI_LOG_LEVEL_TRACE_3,"%s,ActMbCnt = %d\n",__FUNCTION__,ActMbCnt);
} /* Ime_Set_EngChar */


// type: 0 py_label; 1 mb_label; 2 sym_label
static UINT16 Ime_Cal_PosY(UINT8 type)
{
    UINT16 PosY = 0;

    if (type == 0)
    {
        PosY = LabelPosY == 0 ? 210 : LabelPosY - lv_font_get_line_height(LV_THEME_SIMPLE_FONT_NORMAL);
    }
    else if (type == 1)
    {
        PosY = LabelPosY == 0 ? 235 : LabelPosY - 2;
    }
    else
    {
        PosY = LabelPosY == 0 ? 205 : LabelPosY - lv_font_get_line_height(LV_THEME_SIMPLE_FONT_NORMAL);
    }
    return(PosY);
} /* Ime_Cal_PosY */


// type 0 reset; 1 oneline; 2 two line
static VOID Ime_Set_Ta_Height(UINT8 type)
{
    if (LabelPosY == 0)
    {
        lv_coord_t ver;
        _lv_style_get_int(&lv_style_plain, LV_STYLE_PAD_TOP, &ver);

        lv_obj_set_height(Ime_Ext->Ta, TaOriHeight - lv_font_get_line_height(
                              LV_THEME_SIMPLE_FONT_NORMAL) * type - ver * type );
    }
}
